在复杂的数据库结构中带有条件的Hibernate查询

3

我有一个复杂的数据库,看起来像这样:

product *1 <-> n* inventory *n <-> 1* inventoryUser *1 <-> n* user

现在我想在HQL中查询所有用户的产品,其中用户的名字为“peter”。
2个回答

3
我找到了如何处理它的方法:
Product as p join fetch p.inventories as i join fetch i.inventoryUser as iu join fetch iu.user as u where u.name=:name

2
在您的实体和映射中,您应该为每个关系设置引用。您的HQL查询将如下所示:
SELECT p FROM Product p, IN(p.inventory.inventoryUser) AS iu 
    WHERE iu.username=:username

呵呵,如果那么容易就好了...我已经尝试过这个方法,但由于inventoryUser是一个Hibernate集合,所以会抛出“QueryException: illegal attempt to dereference collection”的异常。 - woezelmann
不,仍然出现了“HibernateQueryException: illegal attempt to dereference collection [product0_.id.inventories] with element property reference [inventoryUser]”错误。 - woezelmann
@Bozho:你写的应该可以工作。但是你能告诉我为什么它不会像这样工作吗:FROM Product p, IN(p.inventory.inventoryUser) AS iu WHERE iu.username=:username(花了我很长时间才弄清楚我必须将选择放在这个集合引用中才能这样工作) - Julia
我已经很久没有使用“FROM X”语法了,所以我不太清楚。 - Bozho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接