有没有一种方法可以在不使用关联类的情况下联接Spring JPA中的两个表。

我有两个MySQL DB表:
员工(id,.....,department_id)
部门(id,.....)
我正在寻找一种仅使用员工和部门类来联接这些表的方法。

目前,我设法加入了两个表,但使用了第三个关联类。
我当前的实现是:

员工类别:

@Entity(name = "Employee")
@Table(name = "employees")
@JsonInclude(Include.NON_NULL)
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @JsonIgnore
    @Column(name = "employee_id")
    private Long employeeId;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @Column(name = "phone_number")
    private String phoneNumber;

    @Column(name = "hire_date")
    private Double hireDate;

    @Column(name = "job_id")
    private Long jobId;

    @Column(name = "salary")
    private Double salary;

    @Column(name = "commission_pct")
    private Double commissionPct;

    @Column(name = "employees")
    private Long employees;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id", insertable = false, updatable = false)
    @Fetch(FetchMode.JOIN)
    private Department department;

}


部门课:

@Entity(name = "Department")
@Table(name = "departments")
@JsonInclude(Include.NON_NULL)
public class Department implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "department_name")
    private String departmentName;

    @Column(name = "department_id")
    private long departmentId;

    @Column(name = "manager_id")
    private Double managerId;
    @Column(name = "location_id")
    private Double locationId;


}


协会班:

public class DeptEmpDto {
    private long departmentId;
    private String departmentName;
    private Double managerId;
    private Double locationId;
    private long employeeId;
    private String firstName;
    private String lastName;
    private String phoneNumber;
    private Double hireDate;
    private Long jobId;
    private Double salary;
    private Double commissionPct;

}


仓库:

public interface IEmployeeRepository extends JpaRepository<Employee, Long> {

    @Query("SELECT new com.concretepage.entity.DeptEmpDto(d.departmentId,d.departmentName,d.managerId,d.locationId,e.employeeId,e.firstName,e.lastName,e.phoneNumber,e.hireDate,e.jobId,e.salary,e.commissionPct FROM Employee e INNER JOIN Department d ON d.id = e.jobId")
    List<DeptEmpDto> fetchEmpDeptDataInnerJoin();

最佳答案

您可以在Employee类中使用它

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
        name = "DeptEmp",
        joinColumns = @JoinColumn(name = "emp_id",referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "dep_id",referencedColumnName = "id")
)
private Set<Departments> departments = new HashSet<>();


Look at this about JPA

07-28 02:22
查看更多