Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NativeQuery比HibernateOGM方法更好_Java_Hibernate_Nativequery_Hibernate Ogm_Hibernate Native Query - Fatal编程技术网

Java NativeQuery比HibernateOGM方法更好

Java NativeQuery比HibernateOGM方法更好,java,hibernate,nativequery,hibernate-ogm,hibernate-native-query,Java,Hibernate,Nativequery,Hibernate Ogm,Hibernate Native Query,我正在使用hibernate OGM与我的MongoDB实例对话。我必须得到一份所有分类为“abc”的产品清单。我使用本机查询方法来实现这一点,如下所示: String stringQuery = "db.Message.find({'CATEGORY':'" + category + "})"; Query query = entityManagerProvider.get().createNativeQuery(stringQuery, Product.class); productList

我正在使用hibernate OGM与我的MongoDB实例对话。我必须得到一份所有分类为“abc”的产品清单。我使用本机查询方法来实现这一点,如下所示:

String stringQuery = "db.Message.find({'CATEGORY':'" + category + "})";
Query query = entityManagerProvider.get().createNativeQuery(stringQuery, Product.class);
productList = query.getResultList();
我不确定这样做是否正确,因为我看到了太多的硬编码(查看集合名称)。我可以使用
.find()
方法实现同样的功能吗?
我们正在使用带有gradle的Vertex服务器作为构建工具。

您是指
EntityManager.find()
?如果使用主键进行筛选,则可以使用它。在你的例子中似乎不是这样

您可以编写一个JP-QL查询:

productList = entityManagerProvider.get().createQuery( "SELECT p FROM Product p WHERE p.category=:category", Product.class ).setParameter("category", category).getResultList();

我假设您有一个具有属性
类别
的实体
产品

mongoDB也会这样吗?这是比使用nativeQuery更好的方法吗?是的,它将与MongoDB一起工作。我认为这是一个更好的方法,因为它是可移植的。当您要更改后端时,同样的查询也将在其他数据存储上工作。Hibernate OGM还能够调整查询,以防您更改有关映射的某些内容。