问题描述
public fun getEntityManager(): EntityManager {
val tm: TransactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager()
val emf: EntityManagerFactory = Persistence.createEntityManagerFactory(
"mongo-ogm")
tm.begin()
return emf.createEntityManager()
}
原因:java.lang.NoSuchFieldError:FSYNCED 在org.hibernate.ogm.datastore.mongodb.options.WriteConcernType。(WriteConcernType.java:37) 在org.hibernate.ogm.datastore.mongodb.options.impl.WriteConcernoption。(WriteConcernoption.java:29) 在java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在java.base / jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java.base / java.lang.reflect.Constructor.newInstance(Constructor.java:490) 在java.base / java.lang.class.newInstance(Class.java:584) 在org.hibernate.ogm.options.navigation.source.impl.ConfigurationoptionValueSource $ ConfigurationBasedOptionContainer.getAll(ConfigurationoptionValueSource。 java:82)
<persistence-unit name="mongo-ogm" transaction-type="JTA">
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
<class>com.ogm.model.UserEntity</class>
<properties>
<property name="hibernate.ogm.datastore.provider" value="mongodb"/>
<property name="hibernate.ogm.datastore.database" value="demo"/>
<property name="hibernate.ogm.mongodb.host" value="localhost"/>
<property name="hibernate.ogm.mongodb.username" value=""/>
<property name="hibernate.ogm.mongodb.password" value=""/>
<!-- <property name="" value="localhost"/>-->
<property name="hibernate.search.default.directory_provider" value="filesystem"/>
<property name="hibernate.search.default.indexBase" value="/tmp/.hibernate_ogm_demo_luceneindexes"/>
</properties>
</persistence-unit>
implementation("org.hibernate.ogm:hibernate-ogm-mongodb:5.4.1.Final")
implementation("org.mongodb:mongodb-driver-reactivestreams:4.0.5")
implementation("org.jboss.narayana.jta:narayana-jta:5.8.1.Final")
implementation("org.jboss:jboss-transaction-spi:7.6.0.Final")
解决方法
通常,当您的依赖项不匹配时,会发生此问题。 我怀疑您的类路径中有多个版本的hibernate-ogm-mongodb。
hibernate-ogm-mongodb:5.4.1.Final
包含枚举WriteConcernType.FSYNCED(WriteConcern.FSYNCED)
- 运行
gradle dependencies | grep hibernate-ogm-mongodb
,验证是否有多个版本的库作为依赖项。 - 从您的
build.gradle
文件中的其他依赖项中排除较旧/其他版本。