орг.зимовать.QueryException: незаконная попытка разыменования коллекции
Я пытаюсь выполнить запрос hql для выполнения
SELECT count(*)
FROM BillDetails as bd
WHERE bd.billProductSet.product.id = 1002
AND bd.client.id = 1
но это показывает
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.buildIllegalCollectionDereferenceException(DotNode.java:68)
at org.hibernate.hql.ast.tree.DotNode.checkLhsIsNotCollection(DotNode.java:558)
2 ответов
billProductSet
это Collection
.
Таким образом, он не имеет атрибута с именем product
.
Product
атрибут элементов этой Collection
.
вы можете исправить проблему путем вступление коллекция вместо разыменования это:
SELECT count(*)
FROM BillDetails bd
JOIN bd.billProductSet bps
WHERE bd.client.id = 1
AND bps.product.id = 1002
потому что billProduct - это один ко многим сопоставлениям, и есть много объектов billProduct из одного объекта BillDetails, вы не можете разыменовать его в запросе.вы должны присоединиться к модели BillDetails к billProduct и фильтровать результат с помощью where cluase.