首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Hibernate标准与3个表连接

Hibernate标准与3个表连接
EN

Stack Overflow用户
提问于 2012-01-04 19:50:44
回答 1查看 162.5K关注 0票数 63

我正在寻找一个休眠标准,以获得以下内容:

Dokument.class映射到角色roleId

Role.class有一个ContactPerson contactId

Contact.class FirstName LastName

我想在Contact类上搜索First或LastName,并检索连接的Dokuments列表。

我尝试过这样的东西:

代码语言:javascript
复制
session.createCriteria(Dokument.class)
.setFetchMode("role",FetchMode.JOIN)
.setFetchMode("contact",FetchMode.JOIN)
.add(Restrictions.eq("LastName","Test")).list();

我收到一个错误,无法解析类"Dokument“的属性"LastName”

有人能解释一下为什么join只在Dokument上搜索而不是在所有join表上搜索吗?提前感谢大家的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-04 20:19:32

fetch模式只表示必须获取关联。如果要在关联实体上添加限制,则必须创建别名或子标准。我通常更喜欢使用别名,但YMMV:

代码语言:javascript
复制
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 reference manual中得到了很好的解释,javadoc for Criteria甚至还提供了示例。请阅读文档:其中有大量有用的信息。

票数 122
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8726396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档