我正在寻找一个hibernate标准以获取以下信息:
Dokument.class映射到角色roleId
Role.class具有一个ContactPerson contactId
Contact.class名字姓
我想在Contact类中搜索名字或姓氏,并检索连接的Dokuments列表。
我已经尝试过这样的事情:
session.createCriteria(Dokument.class) .setFetchMode("role",FetchMode.JOIN) .setFetchMode("contact",FetchMode.JOIN) .add(Restrictions.eq("LastName","Test")).list();
我收到错误,无法为类“ Dokument”解析属性“ LastName”
有人可以解释为什么联接在Dokument而不是在所有联接的表上搜索吗?在此先感谢您提供的所有帮助!
提取模式仅表示必须提取关联。如果要对关联实体添加限制,则必须创建别名或子条件。我通常更喜欢使用别名,但是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参考手册中已有很好的解释,甚至Criteria的javadoc都包含示例。阅读文档:它具有大量有用的信息。