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
。
我正在使用休眠 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
。