Spring 4、WildFly 10を使用して、mongodb 3.2でHibernate OGM 5.0.0.Finalを使用しています
以下のこのコードは Object[] で正常に動作します
List<Object[]> result = em.createNativeQuery("{ \"id\": \"1\" }").getResultList();
しかし、エンティティを使用してこのようにクエリを実行すると
List<Survey> 結果 = em.createNativeQuery("{ \"id\": \"1\"}", Survey.class).getResultList();
投げます
エラー [stderr] (デフォルト タスク 2) java.lang.NoSuchMethodError: org.hibernate.engine.internal.TwoPhaseLoad.addUninitializedEntity(Lorg/hibernate/engine/spi/EntityKey;Ljava/lang/Object;Lorg/hibernate/persister/エンティティ/EntityPersister;Lorg/hibernate/LockMode;ZLorg/hibernate/engine/spi/SessionImplementor;)V org.hibernate.ogm.loader.impl.OgmLoader.loadFromResultSet (OgmLoader.java:1143) で org.hibernate.ogm.loader.impl.OgmLoader.instanceNotYetLoaded (OgmLoader.java:1065) で org.hibernate.ogm.loader.impl.OgmLoader.getRow (OgmLoader.java:959) で org.hibernate.ogm.loader.impl.OgmLoader.getRowFromResultSet (OgmLoader.java:498) で org.hibernate.ogm.loader.impl.OgmLoader.doQuery (OgmLoader.java:373) で org.hibernate.ogm.loader.impl.OgmLoader.doQueryAndInitializeNonLazyCollections (OgmLoader.java:283) で org.hibernate.ogm.loader.impl.OgmLoader.loadEntity (OgmLoader.java:201) で org.hibernate.ogm.loader.impl.OgmLoader.load (OgmLoader.java:157) で org.hibernate.ogm.loader.impl.OgmLoader.load (OgmLoader.java:149) で org.hibernate.ogm.loader.entity.impl.DynamicBatchingEntityLoaderBuilder$DynamicBatchingEntityLoader.load (DynamicBatchingEntityLoaderBuilder.java:116) で org.hibernate.persister.entity.AbstractEntityPersister.load (AbstractEntityPersister.java:3991) で org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) で org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) で org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) で org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262) で org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) で org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) で org.hibernate.internal.SessionImpl.fireLoad (SessionImpl.java:1142) で org.hibernate.internal.SessionImpl.access$2600 (SessionImpl.java:167) で org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2762) で org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load (SessionImpl.java:2741) で org.hibernate.internal.SessionImpl.get (SessionImpl.java:978) で org.hibernate.engine.spi.SessionDelegatorBaseImpl.get (SessionDelegatorBaseImpl.java:629) で org.hibernate.jpa.spi.AbstractEntityManagerImpl.find (AbstractEntityManagerImpl.java:1075) で org.hibernate.jpa.spi.AbstractEntityManagerImpl.find (AbstractEntityManagerImpl.java:1033) で org.hibernate.ogm.jpa.impl.OgmEntityManager.find(OgmEntityManager.java:97) で
この問題を解決する方法を知っている人はいますか?
これが私のコードの一部です
調査.java
@Entity
public class Survey {
@Id
private String id;
private String created_by;
private String desc;
//getter,setter
}
persistence.xml
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="mongodb_persistence"
transaction-type="JTA">
<!-- Use Hibernate OGM provider: configuration will be transparent -->
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
<class>com.ogm.entity.Survey</class>
<properties>
<property name="hibernate.transaction.jta.platform" value="JBossAS" />
<property name="hibernate.ogm.datastore.provider" value="mongodb" />
<property name="hibernate.ogm.datastore.host" value="localhost" />
<property name="hibernate.ogm.datastore.port" value="27017" />
<property name="hibernate.ogm.datastore.database" value="testdb" />
<property name="hibernate.ogm.neo4j.database_path" value="target/test_data_dir" />
</properties>
</persistence-unit>
</persistence>