hibernate标准join3个表
我正在寻找一个hibernate条件来获得以下内容:
Dokument.class被映射到angular色roleId
Role.class有一个ContactPerson contactId
Contact.class名字姓氏
我想在Contact类上searchFirst或LastName,并检索已连接的Dokuments的列表。
我曾尝试过这样的事情:
session.createCriteria(Dokument.class) .setFetchMode("role",FetchMode.JOIN) .setFetchMode("contact",FetchMode.JOIN) .add(Restrictions.eq("LastName","Test")).list();
我得到一个错误无法parsing属性“姓氏”类“Dokument”
有人可以解释为什么joinsearchDokument而不是所有连接的表? 在此先感谢所有的帮助!
提取模式只表示该关联必须被提取。 如果您想在关联的实体上添加限制,则必须创build别名或子标准。 我通常更喜欢使用别名,但是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甚至有例子。 阅读文档:它有很多有用的信息。