Reputation: 2235
Consider the following Entities.
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;
}
The above two entities maps to tables Product and Inventory respectively.
Now I have to retrieve Products based on certain conditions in Product entity as well as Inventory entity.
For ex the conditions are given travel start date and travel end date has to suit effective and expiry date of Product. Product Inventory should have availableQuantity > 0.
To do this how can i write the hql. Can i write something like the following
Query query = session.createQuery("from Product As product " +
"where product.effectiveDate <= :travelStartDate "+
"AND product.expiryDate >= :travelEndDate " +
"AND product.productInventories.availableQuantity >0 ");
When i execute the above query, it throws a Illegal attempt to dereference a collection exception.
Upvotes: 2
Views: 11991
Reputation: 24722
You probably want something like
from Product as product
inner join product.productInventories inv with inv.availableQuantity>0
See http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-joins
Upvotes: 7