hibernate自引用表通过fk获取行

时间:2013-07-19 10:01:21

标签: java sql spring hibernate hibernate-mapping

table Student
----------------
id  | somecolumn with string| fk(which is self referencing ID of the same table)

如何制作hibernate查询,以获取id值与fk值匹配的所有项目。

这是我尝试过但它不起作用(它只返回1个结果而不是结果集)

List<Student> list = (List<Student>) sessionFactory
            .getCurrentSession()
            .createQuery("from Student p join p.studentFKs p2 where p2.id = :parentId")
            .setParameter("parentId", parentId).list();
有人可以帮我解决这个错误吗?我知道它也可以用Hibernate标准来实现。

更新答案是将查询更改为(加入无效..):

select p from Student p join p.student p2 where p2.id = :parentId

1 个答案:

答案 0 :(得分:0)

我使用这样的东西,这是工作

实体内部加入的属性学生:

@ManyToMany(cascade = CascadeType.REFRESH)
private Set<Student> testJoins = new HashSet<Student>();

获取该套装的HQL:

select a.testJoins from Student a where a.id = :parentId

也许您可以将查询从p2.id = :parentId更改为 - &gt;&gt; p.id = :parentId