考虑以下实体。
public class Product{
int id;
Date effectiveDate;
Date expiryDate;
Set<Inventory> productInventories;
}
public class Inventory{
int invId;
Date inventoryDate;
boolean soldOut;
int availableQuantity;
Product product;
}
以上两个实体分别映射到表Product和Inventory。
现在我必须根据产品实体和库存实体中的某些条件检索产品。
对于前提条件,旅行开始日期和旅行结束日期必须符合产品的有效期限和到期日期。产品库存应该有可用数量&gt; 0
要做到这一点,我怎么能写hql。我可以写下面的内容
Query query = session.createQuery("from Product As product " +
"where product.effectiveDate <= :travelStartDate "+
"AND product.expiryDate >= :travelEndDate " +
"AND product.productInventories.availableQuantity >0 ");
当我执行上述查询时,它会抛出非法尝试取消引用集合异常。
答案 0 :(得分:6)
你可能想要像
这样的东西from Product as product
inner join product.productInventories inv with inv.availableQuantity>0
请参阅http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-joins