Java NativeQuery比HibernateOGM方法更好
我正在使用hibernate OGM与我的MongoDB实例对话。我必须得到一份所有分类为“abc”的产品清单。我使用本机查询方法来实现这一点,如下所示: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
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还能够调整查询,以防您更改有关映射的某些内容。