我正在寻找一个休眠标准,以获得以下内容:
Dokument.class映射到角色roleId
Role.class有一个ContactPerson contactId
Contact.class FirstName LastName
我想在Contact类上搜索First或LastName,并检索连接的Dokuments列表。
我尝试过这样的东西:
session.createCriteria(Dokument.class)
.setFetchMode("role",FetchMode.JOIN)
.setFetchMode("contact",FetchMode.JOIN)
.add(Restrictions.eq("LastName","Test")).list();
我收到一个错误,无法解析类"Dokument“的属性"LastName”
有人能解释一下为什么join只在Dokument上搜索而不是在所有join表上搜索吗?提前感谢大家的帮助!
发布于 2012-01-04 20:19:32
fetch模式只表示必须获取关联。如果要在关联实体上添加限制,则必须创建别名或子标准。我通常更喜欢使用别名,但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 reference manual中得到了很好的解释,javadoc for Criteria甚至还提供了示例。请阅读文档:其中有大量有用的信息。
https://stackoverflow.com/questions/8726396
复制相似问题