gpt4 book ai didi

java - 如何使用JPA JAVA进行JOIN

转载 作者:行者123 更新时间:2023-12-02 05:10:28 28 4
gpt4 key购买 nike


我想简短明了地解决我的问题。我正在尝试从执行连接的数据库中检索数据以获得我想要的结果。
所以我有 3 张 table ,

EMPLOYEE:
emp_id -- PK
name..
surname..
dob.. etc

用户:

UserID PK
Username
Pass
emp_id fk
role_id fk

角色

RoleID pk
Description

我想执行查询来获取作为用户且 roleid =2 的员工列表;我怎样才能在 JPA 上做到这一点

我试过了

Select e from Employee e JOIN User u Join Role r where r.roleId = 2

但是它仍然无法在不过滤 ID=2 的员工的情况下获取所有员工

谢谢大家

最佳答案

您必须在实体之间设置关联,即定义两个实体如何相互链接。这样spring就能将jpql转换成sql并获取数据。

您必须编写您的用户和员工实体,例如

public class User {
...
@OneToOne
@JoinColumn //using which column name it should join
private Employee employee;

@ManyToOne
@JoinColumn
private Role role;
...
public class Employee {
...
@OneToOne(mapedBy="employee")
private User user;
...

然后你可以编写你的查询

@Query("select e from Employee e LEFT JOIN e.user u LEFT JOIN u.role r where r.id = :roleId")
List<Employee> getEmployeeListByRoleId(@Param("roleId") Long roleId);

关于java - 如何使用JPA JAVA进行JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329263/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com