突然、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>
任意のアイデア:私のポンポンは、次の依存関係が含まれて?ありがとう。