【问题标题】:Hibernate query help休眠查询帮助
【发布时间】:2011-05-09 04:36:55
【问题描述】:

我有一个与 ProductInventory 类具有一对多关系的产品类。对于特定的产品 ID,我有大约 300 个库存。

如果我想根据 id 和指定日期范围内的库存获取产品,我该如何执行查询?

我可以使用 hql 或标准。但我不确定如何实现它,因为我是 hibernate 的初学者。请帮忙。

【问题讨论】:

  • 你有SQL知识吗?在发布这个问题之前,您是否尝试过通读 hibernate hql 文档?
  • 我做了...事实上我有一个运行良好的 hql 连接查询。但是我如何处理查询的输出是我被打动的地方。

标签: java hibernate hql


【解决方案1】:

HQL 示例,

String hql = "FROM Product p WHERE p.id = :id AND p.inventory.date BETWEEN :date1 AND :date2";

Query query = session.createQuery(hql);
query.setParameter("id", id);
query.setParameter("date1", date1);
query.setParameter("date2", date2);     

List<Product> products = query.list();
for(Product product : products) {
    System.out.println(product.getId() + "...");
    List<ProductInventory> inventories = product.getProductInventory();
    for(ProductInventory inventory : inventories) {
        System.out.println(inventory.get...);
    }
}

【讨论】:

  • 嗨 rosdi,在上面的 hql 中,库存是一个集合吗?
  • 是的,当然,这是一对多的关系。它可以是SetList,具体取决于您在映射/注释中的配置方式。
  • Rosdi,我在我的代码中尝试了同样的方法。我收到一个异常,说非法尝试取消引用集合...
  • 发布您的映射/注释和代码,以便每个人都可以发表评论。
  • String hql = "来自产品 p,其中 p.id = :id 和 p.inventory.inventoryId.bookDate 在 :date1 和 :date2 之间";请注意,这里的库存是一个集合。 Inventory 类有一个嵌入的 id,其中一个属性是 bookDate
【解决方案2】:

我会推荐使用标准和你可以使用的日期范围

criteria.add(Restrictions.between(column_name, minValue,maxValue)).list();

更多参考visit here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多