【问题标题】:NativeQuery is better or HibernateOGM methodsNativeQuery 或 HibernateOGM 方法更好
【发布时间】:2016-04-18 08:27:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: java hibernate nativequery hibernate-ogm hibernate-native-query


    【解决方案1】:

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

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

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

    我假设您有一个实体Product,其属性为category

    【讨论】:

    • 这也适用于 mongoDB 吗?这是比使用 nativeQuery 更好的方法吗?
    • 是的,它适用于 MongoDB。我认为这是一种更好的方法,因为它是可移植的。当您要更改后端时,相同的查询也适用于其他数据存储。 Hibernate OGM 还能够适应查询,以防您更改有关映射的某些内容。
    猜你喜欢
    • 1970-01-01
    • 2012-02-08
    • 2017-05-11
    • 1970-01-01
    • 2021-08-31
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多