2017-02-02 3 views
0

스프링 데이터, JPA를 사용 중이며 manyToOne 관계를 사용하여 데이터를 가져올 수 없습니다.스프링 데이터를 사용하여 manyToOne을 사용하여 데이터를 가져올 수 없습니다. JPA

나는 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); 
     } 
    } 

나는 Employee 기업 측에서 EmployeeTransferRequest을지도하지 않았다. 유일한 uni-directionalEmployeeTransferRequest입니다.

내가 findOne를 호출하고

, 나는 EmployeeTransferRequest에서 모든 정보를 얻을 수 있어요,하지만 null을 받고, Employee 정보를 받고.

도와 주시겠습니까?

+0

FetchType을 LAZY에서 EAGER로 변경하려고 했습니까? –

+0

@ melli-182, 예, 저는 EAGER로 LAZY를 바꾸어 시도했지만 작동하지 않았습니다. – Venky

+1

실제 코드를 게시하십시오. 이 코드는 컴파일되지 않습니다 : capital class, missing parens. getter에 주석을 달아주기 때문에 최대 절전 모드에서는 값을 채우기 위해 setter를 사용해야하지만 아무 것도 없기 때문에 작동하지 않을 수 있습니다. 하지만 ... 이것은 실제로 사용하는 코드가 아닙니다 ... –

답변

0

매핑을 insertable=false으로 지정했기 때문입니다. 즉, 이전 요청을 만들면 관계가 지속되지 않으므로 나중에 요청을 쿼리 할 때 null이됩니다.

+0

나는 직원 정보를 유지하기 위해 Employee 객체를 사용하지 않고, 끈기를 위해 empId 속성을 사용하고있다. 코드를 업데이트했다. – Venky