2017-12-22 44 views
0

突然、hibernateを使用してユーザーをデータベーステーブルに挿入するコードが正常に機能しなくなりました(エラーなしで長時間作業していました)。例外として、永続性ユニットを作成できないというメッセージが表示されます。以下に示すスタックトレースがあります。persistence.xmlを使用してHibernate SessionFactoryを構築できません

** ----------------------- -------------------------------------------------- ----

javax.persistence.PersistenceException: [PersistenceUnit: craiglistPU] Unable to build Hibernate SessionFactory 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:967) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 
    at utils.JPAUtil.getEntityManagerFactory(JPAUtil.java:15) 
    at dao.UserDAOImpl.insertUser(UserDAOImpl.java:38) 
    at tests.MainDriver.main(MainDriver.java:21) 

** ------------------------------------- ----------------------------------------

根本的な例外はこのファイル内の 'if'ステートメント内の行に表示されます。

public class JPAUtil { 
    //name of persistence unit from persistence.xml 
    private static final String PERSISTENCE_UNIT_NAME = "craiglistPU"; 
    private static EntityManagerFactory factory; 

    public static EntityManagerFactory getEntityManagerFactory() { 
     if (factory == null) { 
     //line below this throws exception 
     factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     //line above this 
     } 
     return factory; 
    } 

** ----------------------------------------------- -------------------------------------------------- -------ここ は/正しく接続されピング私のデータソースの設定のスクリーンショットです: working datasource setup

は最後に、ここに私のpersistence.xmlのためのコードは次のとおりです。

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
     http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" 
version="2.1"> 

<persistence-unit name="craiglistPU" transaction-type="RESOURCE_LOCAL"> 
    <description>Persistence unit used for craigslist database</description> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

    <properties> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/craigslist?useSSL=false" /> 
     <property name="javax.persistence.jdbc.user" value="root" /> 
     <property name="javax.persistence.jdbc.password" value="" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
    </properties> 

</persistence-unit> 

私のbean/modelクラスが正しく構成されていると仮定します。私はそれらを作成するためにeclipse jpaを使用し、作成以来それらを変更していません。

この問題を解決する方法についてのご意見をいただければ幸いです。また、さらにソースコードを表示したい場合は、私に知らせてください(または私のリポジトリへのアクセスを許可する)ことができます。本当にありがとう!スタックトレースの原因を調べた後

EDIT :

Caused by: org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration 
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:138) 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:276) 
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:490) 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:878) 
... 6 more 
Caused by: java.lang.NoSuchMethodError:  javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String; 
at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.<init>(ValidationBootstrapParameters.java:61) 
at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:486) 
at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:295) 
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110) 
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:463) 
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:84) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:132) 
... 9 more 

私は今、これはjavax.validationによって引き起こされると考えているとの問題・バリデータ・休止状態。私は、彼らが一緒に正しく動作するように、これらの依存関係から何かを除外し、あるいは異なるバージョン番号を選択する必要がある場合

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>6.0.2.Final</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator-annotation-processor --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-annotation-processor</artifactId> 
     <version>6.0.2.Final</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/javax.validation/validation-api --> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>2.0.0.Final</version> 
    </dependency> 

任意のアイデア:私のポンポンは、次の依存関係が含まれて?ありがとう。

答えて

0

NoSuchMethodErrorは、バージョンの不一致があることを示しています。 The documentationには、2.0のjavax.validation.validation-apiライブラリで欠落しているメソッドが使用されているため、クラスパスに古いバージョンが競合している可能性があります。古いバージョンのjarがロードされていることを確認するために、mavenを使用してdependency treeを確認できますか?

関連する問題