org.hibernate.QueryException: illegal attempt to dereference collection

dereference, hibernate, hql, jpa-2.0, jpa-2.1

Solution

`billProductSet` is a `Collection`. As such, it does not have an attribute named `product`.

`Product` is an attribute of the elements of this `Collection`.

You can fix the issue by joining the collection instead of dereferencing it:

SELECT count(*) 
  FROM BillDetails        bd 
  JOIN bd.billProductSet  bps 
 WHERE bd.client.id       = 1
   AND bps.product.id     = 1002

Problem

I am trying following hql query to execute ``` SELECT count(*) FROM BillDetails as bd WHERE bd.billProductSet.product.id = 1002 AND bd.client.id = 1 ``` But it is showing ``` org.hibernate.QueryException: illegal attempt to dereference collection [billdetail0_.bill_no.billProductSet] with element property reference [product] [select count(*) from iland.hbm.BillDetails as bd where bd.billProductSet.product.id=1001 and bd.client.id=1] at org.hibernate.hql.ast.tree.DotNode$1.buildIllegalCollectionDereferenceException(DotNode.java:68) at org.hibernate.hql.ast.tree.DotNode.checkLhsIsNotCollection(DotNode.java:558) ```

Original source