【发布时间】:2019-11-06 00:01:45
【问题描述】:
有没有办法在 Spring JPA 中连接两个表而不使用关联类。
我有两个 MySQL 数据库表: 员工(id,.....,department_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();
【问题讨论】:
-
“关联类”是什么意思?您已经通过
@ManyToOne加入了表格
标签: java spring jpa spring-data-jpa jpql