Sripaul
Sripaul

Reputation: 2235

Hibernate Exception : Illegal attempt to dereference a collection

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

Answers (1)

Alex Gitelman
Alex Gitelman

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

Related Questions