休眠条件和多重联接
有没有可能用休眠标准来做吗?
select A.something, B.something, C.something, D.something
from A JOIN B on A.id = B.id_fk
JOIN C ON B.id = C.id_fk
JOIN D ON C.id = D.id_fk;
有没有可能用休眠标准来做吗?
select A.something, B.something, C.something, D.something
from A JOIN B on A.id = B.id_fk
JOIN C ON B.id = C.id_fk
JOIN D ON C.id = D.id_fk;
我遇到了完全相同的问题,并且能够像这样解决它:
return criteria.createCriteria(A.class)
.createCriteria("b", "join_between_a_b")
.createCriteria("c", "join_between_b_c")
.createCriteria("d", "join_between_c_d")
.add(Restrictions.eq("some_field_of_D", someValue));
注意:,在上面的代码中引用的属性名称,和类,相应地(类具有属性等)。"b"
"c"
"d"
A
B
C
A
b
对于此解决方案,您甚至不需要在 .lazy
fetch
A.hbm.xml
在 Hibernate 参考资料中有一些很好的例子,它们显示了如何使用 setFetchMode 获取与外连接的关联。
例如:
List books = sess.createCriteria(Book.class)
.setFetchMode("chapters", FetchMode.EAGER)
.setFetchMode("reviews", FetchMode.EAGER)
.list();
那里还有关于可能对您有用的不同取件标记的信息。