我有一个包含2类Club和Article的应用程序。这些在Hibernate中被映射为多对多关系。

结果,hibernate创建了一个名为CLUB_ARTICLE的表,该表用于管理多对多关系。 CLUB和ARTILCE表之间没有直接引用,并且映射仅在CLUB_ARTICLE表中表示。

我需要创建一个HQL查询,该查询返回特定俱乐部的商品列表。因此,我需要提供俱乐部ID并获取属于它的Article对象的列表。由于某种原因,我只是无法确定如何做到这一点。任何帮助将不胜感激!

谢谢。

最佳答案

代码中ClubArticle之间是什么关系?当您认为自己的HQL时,您需要忘记数据库架构。 hql中只能使用在休眠映射(注释或xml)中定义的关系。

假设您的映射是双向的,并且您有一个名为Club的Club集合,那么您可以执行以下操作:

String hql = "from Article where clubs = :club";


然后在查询中设置您的俱乐部实体:

Query q = sess.createQuery(hql);
q.setEntity("club", club);


现在,如果Article没有Club的集合(列表/集合),它将变得更加复杂。您可以从Club中选择并对商品ID进行投影,然后获取它们。但是,我建议您仅将一个collection属性添加到Article实体,因为它不会影响数据库架构,并且会简化查询。

关于java - 如何创建HQL查询以多对多关系返回对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2485837/

10-09 09:43