NativeQuery 或 HibernateOGM 方法更好

NativeQuery is better or HibernateOGM methods

我正在使用休眠 OGM 与我的 MongoDB 实例对话。我必须获得类别为 "abc" 的所有产品的列表。我正在使用本机查询方法来实现如下:

String stringQuery = "db.Message.find({'CATEGORY':'" + category + "})";
Query query = entityManagerProvider.get().createNativeQuery(stringQuery, Product.class);
productList = query.getResultList();

我不确定这样做是否正确,因为我看到太多的硬编码(查看集合名称)。我可以使用 .find() 方法来实现同样的事情吗? 我们正在使用带有 gradle 作为构建工具的 vertx 服务器。

你是说 EntityManager.find() 吗?如果您使用主键进行过滤,则可以使用它。在您的示例中似乎并非如此。

你可以做的是编写一个 JP-QL 查询:

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

我假设您有一个具有属性 category 的实体 Product