有没有一种方法可以在 Spring JPA 中连接两个表而不使用关联类。
我有两个 MySQL 数据库表: 员工(id,......,部门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<>();
关于java - Spring JPA 连接两个表,无需第三类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56732176/