休眠自引用表按 FK 获取行


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

如何进行休眠查询,该查询将获取 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();

有人可以帮我解决迷雾吗? 我知道它也可以通过休眠标准来实现。

更新答案是将查询更改为(连接无效。

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

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

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

@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更改为-->> p.id = :parentId

最新更新