我有两张桌子(员工和部门)。
employee (ID、员工姓名、部门id、员工地址)-> ID主键
Department(ID,部门名称、地址)-> ID主键
注:考虑这两个表之间没有主键/外键关系
现在基于Employee中的Department id,我需要从部门获取相应的部门名称,并在Employee.中显示它。
雇员( id,雇员姓名,部门id(显示部门名称而不是部门id,查询部门表,通过传递department id获得部门名称),员工地址)
实现这一目标的所有可能方法是什么?
问候拉杰
发布于 2020-01-27 10:19:00
我认为至少有三种可能的解决办法:
PK/FK-relationship.
@OneToMany
查询就可以完美地完成连接:一个查询用于获取员工,然后提取ID,然后再进行第二个查询,以通过ID获取部门。@OneToMany
关系所做的那样,这样您就可以像往常一样加载员工及其部门。与应用1一样,联接(无论是由您完成还是由JPA提供程序完成)不需要PK/FK-relationship.虽然1可以使用普通SQL完成,但是2可以使用实体管理器完成,而不需要编写“普通”SQL。3显然是最简单的解决办法。
发布于 2020-01-27 13:27:23
您可以在存储库中使用@Query
并使用联接编写JPA查询。
示例查询:
@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);
https://stackoverflow.com/questions/59928965
复制相似问题