Hibernate异常:非法尝试取消引用集合

时间:2011-06-13 06:02:35

标签: java hibernate

考虑以下实体。

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 ");

当我执行上述查询时,它会抛出非法尝试取消引用集合异常。

1 个答案:

答案 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