IT story

org.hibernate.QueryException : 컬렉션을 역 참조하려는 잘못된 시도

hot-time 2020. 12. 29. 07:53
반응형

org.hibernate.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$1.buildIllegalCollectionDereferenceException(DotNode.java:68)
    at org.hibernate.hql.ast.tree.DotNode.checkLhsIsNotCollection(DotNode.java:558)

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는 일대 다 매핑이고 하나의 BillDetails 엔터티에서 많은 billProduct 엔터티가 있으므로 쿼리에서이를 역 참조 할 수 없습니다. BillDetails 모델을 billProduct에 조인하고 where cluase로 결과를 필터링해야합니다.

참조 URL : https://stackoverflow.com/questions/24750754/org-hibernate-queryexception-illegal-attempt-to-dereference-collection

반응형