当前位置: 首页 > 面试题库 >

Hibernate标准与3个表联接

温凯
2023-03-14
问题内容

我正在寻找一个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都包含示例。阅读文档:它具有大量有用的信息。



 类似资料:
  • 问题内容: 我有3个bean:组织,角色,用户 角色-组织关系-@ManyToOne 角色-用户关系-@ManyToMany 组织机构: 角色: 用户名: 因此,我需要获取指定用户的所有组织(首先,我需要选择所有用户角色,然后选择具有此角色的所有组织) 我有一个实现此逻辑的sql语句(例如,我选择id = 1的用户): 如何使用hibernate命名查询机制实现此目的?谢谢! 问题答案: @Nam

  • 问题内容: 我试图在一个视图中联接3个表;情况如下: 我有一张桌子,其中包含正在申请住在此大学校园的学生的信息。我还有另一个表格,列出了每个学生的“大厅偏好设置”(其中有3个)。但是这些首选项只是一个ID号,并且ID号在第三张表中有一个对应的Hall Name(不是设计此数据库…)。 差不多,我在桌子上看到了他们的偏好和他们的信息,结果是… 哪里会是。所以现在我想将其与第三个表匹配,该表包含一个和

  • 现在我正在使用Criteria Hibernate查询从员工表中查询所有记录,它工作正常。我需要将员工表与库表联接,其中库。Emp_Id=员工。Emp_id我是否需要从员工表中获取所有记录,并从库表中获取书名和结账日期,作为联接选择查询的一部分。我该怎么做?

  • 我正在尝试将Hibernate Criteria与命名查询进行性能比较。我知道这一切都取决于实际查询本身,最后一个词是它们在运行时的配置文件。尽管如此,仍在尝试整理每个查询的内容。 我试图将Q分为两部分 PART-1 -- Hibernate条件和命名查询的基本工作原理: Criteria适用于参数。在运行时,查询不需要解析——有几个搜索和“表单存在”参数,例如对结果进行排序,将它们返回为可滚动的

  • 你们要谨慎行事,不要像愚昧人,当像智慧人。要爱惜光阴,因为现今的世代邪恶。不要作糊涂人,要明白主的旨意如何。不要醉酒,酒能使人放荡,乃要被圣灵充满。(EPHESIANS 5:15-18) 标准库(3) OS os模块提供了访问操作系统服务的功能,它所包含的内容比较多,有时候感觉很神秘。 >>> import os>>> dir(os)['EX_CANTCREAT', 'EX_CONFIG', 'E

  • 问题内容: 假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格之和的标准? 问题答案: 我认为您也可以使用SQL投影。应该是这样的: