首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate -如何在没有主/外键关系的情况下从另一个表中获取单个值?

Hibernate -如何在没有主/外键关系的情况下从另一个表中获取单个值?
EN

Stack Overflow用户
提问于 2020-01-27 10:10:48
回答 2查看 1.3K关注 0票数 0

我有两张桌子(员工和部门)。

employee (ID、员工姓名、部门id、员工地址)-> ID主键

Department(ID,部门名称、地址)-> ID主键

注:考虑这两个表之间没有主键/外键关系

现在基于Employee中的Department id,我需要从部门获取相应的部门名称,并在Employee.中显示它。

雇员( id,雇员姓名,部门id(显示部门名称而不是部门id,查询部门表,通过传递department id获得部门名称),员工地址)

实现这一目标的所有可能方法是什么?

问候拉杰

EN

回答 2

Stack Overflow用户

发布于 2020-01-27 10:19:00

我认为至少有三种可能的解决办法:

PK/FK-relationship.

  • Perform
  1. 为此创建了一个“正常”的SQL查询,无需使用@OneToMany查询就可以完美地完成连接:一个查询用于获取员工,然后提取ID,然后再进行第二个查询,以通过ID获取部门。
  2. 更改您的JPA实体以包含关系,就像通常使用@OneToMany关系所做的那样,这样您就可以像往常一样加载员工及其部门。与应用1一样,联接(无论是由您完成还是由JPA提供程序完成)不需要PK/FK-relationship.

虽然1可以使用普通SQL完成,但是2可以使用实体管理器完成,而不需要编写“普通”SQL。3显然是最简单的解决办法。

票数 1
EN

Stack Overflow用户

发布于 2020-01-27 13:27:23

您可以在存储库中使用@Query并使用联接编写JPA查询。

示例查询:

代码语言:javascript
运行
复制
@Query( value = "select new map(employee.name as empName, employee.id as id, department.id as depId, department.name as depName) from Employee employee INNER JOIN Department department ON employee.depId = department.id where employee.id = :id" )
public Map<String,Object> getEmployeeById(long id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59928965

复制
相关文章

相似问题

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