Hibernate OGM使用RESOURCE_LOCAL事务类型从集合中获取所有数据

时间:2017-03-06 06:56:15

标签: mongodb hibernate-ogm

我正在尝试使用Hibernate OGM事务类型RESOURCE_LOCAL从MongoDB中的单个集合中获取所有数据,如下所示: Persistence.xml

<persistence-unit name="NOSQLPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
    <class>jpa.nosql.entity.Customer</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.ogm.datastore.provider" value="org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider"/>
      <property name="hibernate.ogm.mongodb.host" value="127.0.0.1"/>
      <property name="hibernate.ogm.mongodb.port" value="27017"/>
      <property name="hibernate.ogm.mongodb.database" value="test"/>
    </properties>
</persistence-unit>

CustomerRepositoryImpl.java

public List<Customer> getAllCustomers() {
    return em.createQuery( "SELECT c FROM Customer c", Customer.class ).getResultList();
}

但我收到的错误如下:

org.hibernate.ogm.exception.NotSupportedException: OGM-14 - typed queries are not supported yet

如何获取所有数据而不是按Id查找单行?

1 个答案:

答案 0 :(得分:0)

Hibernate OGM应该与您尝试运行的查询一起使用。 我可以在persistence.xml中看到一些错误,但我不确定它们是否与此问题有关。

无论如何,您应该用以下属性替换当前属性:

  <property name="hibernate.ogm.datastore.provider" value="mongodb"/>
  <property name="hibernate.ogm.datastore.host" value="127.0.0.1:27017"/>
  <property name="hibernate.ogm.datastore.database" value="test"/>

您可以在文档中找到更多配置选项:https://docs.jboss.org/hibernate/stable/ogm/reference/en-US/html_single/#_configuring_mongodb

另外,请确保在类路径中包含hibernate-ogm-mongodb dependency

<dependency>
    <groupId>org.hibernate.ogm</groupId>
    <artifactId>hibernate-ogm-mongodb</artifactId>
    <version>5.1.0.Final</version>
</dependency>

如果这样做无法解决问题,请尝试添加有关该项目的更多信息。