我使用的是Spring Data,JPA,无法使用manyToOne
关系获取数据。
我有2个实体Employee
,EmployeeTransferRequest
。
@Entity
@Table(name = "employee_detail")
public class EmployeeDetail{
private Employee employee;
private Long empId;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "emp_id", insertable = false, nullable = false,updatable = false)
public Employee getEmployee() {
return _student;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
@Column(name = "emp_id", updatable = false)
public Long getEmpId() {
return empId;
}
public void setEmpId(Long empId) {
this.empId = empId;
}
}
@Entity
@Table(name = "employee")
class Employee
{
@Override
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = " emp_id")
public Long getEmpId() {
return _id;
// Other Fields of Employee class ..
}
}
public interface EmployeeTransferRequestRepository extends JpaRepository<EmployeeTransferRequest, UUID>, QueryDslPredicateExecutor<EmployeeTransferRequest>
{
default EmployeeTransferRequest findOneUUID transferRequestId) {
return findOne(employeeTransferRequest.id.eq(transferRequestId);
}
}
我没有从EmployeeTransferRequest
实体方面映射Employee
。它仅uni-directional
仅来自EmployeeTransferRequest
。
当我致电findOne
时,我可以从EmployeeTransferRequest
获取所有信息,但无法获取Employee
信息,获取null
。
答案 0 :(得分:0)
这是因为您已将映射指定为insertable=false
。这意味着当您创建转移请求时,该关系不会被保留,在您将来查询请求时会产生null
。