Hibernate条件与3个表的联接

628mspwn  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(123)

我正在寻找一个休眠标准得到以下:
Dokument.classMap到角色roleId
Role.class具有联系人联系人ID
联系人. class名字姓氏
我想在Contact类上搜索First或LastName,并检索连接的文档列表。
我试过这样的方法:

session.createCriteria(Dokument.class)
.setFetchMode("role",FetchMode.JOIN)
.setFetchMode("contact",FetchMode.JOIN)
.add(Restrictions.eq("LastName","Test")).list();

我收到一个错误,无法解析类“Dokument”的属性“LastName”
有人能解释一下为什么连接在文档上搜索,而不是在所有连接表上搜索吗?

anauzrmj

anauzrmj1#

提取模式只说关联必须被提取。如果你想在关联实体上添加限制,你必须创建一个别名,或者一个子标准。我通常更喜欢使用别名,但是YMMV:

Criteria c = session.createCriteria(Dokument.class, "dokument");
c.createAlias("dokument.role", "role"); // inner join by default
c.createAlias("role.contact", "contact");
c.add(Restrictions.eq("contact.lastName", "Test"));
return c.list();

这在Hibernate参考手册中有很好的解释,javadoc for Criteria甚至有例子。阅读文档:它有很多有用信息。

相关问题