【问题标题】:Restricting hibernate's eager fetch beyond DAO限制 hibernate 的 Eager fetch 超出 DAO
【发布时间】:2011-05-17 10:07:22
【问题描述】:

我的实体是 ProductType、Product 和 ProductInventory。

我有一个连接查询来获取特定日期范围内的库存列表,该日期范围连接 Product 和 ProductInventory。我已经得到了我已经投射并准备好的对象数组列表。

现在我从 DAO 返回产品列表。

在我上面的层中,如果我执行 product.getProductInventory() 它实际上是再次触发查询,获取所有库存,而不是连接获得的库存。

    final StringBuilder queryString = new StringBuilder(
                "from  Product As  rsProduct left outer join rsProduct.inventoryList "
                + "as inventory where rsProduct.efDate <= :travelEndDate AND rsProduct.expDate >= :travelStartDate AND rsProduct.locatiion = :LOCN AND rsProduct.id in (:productsIdList) and inventory.bookDate between :startDate and :endDate");

例如。假设旅行开始日期是 1 月 20 日,旅行结束日期是 1 月 21 日。我这里只有两条记录,非常完美。

但在我返回其他层后,如果我说 product.getInventory() 它会获取所有库存,而不管日期。

有人可以解决这个问题吗?

【问题讨论】:

  • 请格式化您的代码。上面的代码甚至不会编译。
  • 肖恩,现在格式化了。看看吧

标签: java hibernate hql


【解决方案1】:

您应该定义一个filter 并在访问集合之前启用它。

【讨论】:

  • 没问题。很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2015-07-22
  • 2012-04-25
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多