2016-08-11 4 views
5

이 3 개 요소를 감안할 때 :스프링 데이터 나머지에서 중첩 된 투영법을 반환하는 방법은 무엇입니까?

@Entity 
class Department{ 
    Set<Employee> employees; 
    Set<Employee> getEmployees(){ 
     return this.employees; 
    };  
} 

@Entity 
class Employee{ 
    Nationality nationality; 
    Nationality getNationality(){ 
     this.nationality; 
    } 
} 
@Entity 
class Nationality{ 

} 

내가 직원과 국적을 가진 모든 부서를 반환 Department위한 투사를 만들려고합니다. 내가 달성 한 것은 직원이 사용하여 모든 부서를 반환하는 것입니다 :

@Projection(name = "fullDepartment", types = { Department.class }) 
public interface DepartmentsProjection { 
    Set<Employee> getEmployees(); 
} 

@RepositoryRestResource(collectionResourceRel = "department", path = "departments") 
public interface DepartmentRepository extends JpaRepository<Department, Long> { 
} 
+1

문제를 해결할 수 있었습니까? – thorinkor

답변

5

이 할 수있는 방법은 중첩 (들) 오브젝트의 프로젝션을 만든 다음 좀 더 글로벌 한이 프로젝션을 사용하는 것입니다. 따라서 문제를 해결하기 위해 국적을위한 프로젝션을 만들 수 있습니다. 국적 프로젝션을 만들 수 있고, 국적 프로젝션을 포착하는 게터가있는 부서와 부서의 실체를 얻기위한 또 다른 프로젝션을 만들 수 있습니다.

@Projection(name = "NationalityProjection", types = { Nationality.class }) 
public interface NationalityProjection{ 
    // getters of all attributes you want to project 
} 

@Projection(name = "EmployeeProjection", types = { Employee.class }) 
public interface EmployeeProjection{ 
    NationalityProjection getNationality(); 
} 

@Projection(name = "DepartmentProjection", types = { Department.class }) 
public interface DepartmentProjection{ 
    Set<EmployeeProjection> getEmployees(); 
} 

희망이 있습니다.

+0

위에서 정의한 투영법을 반환하는 전역 투영법을 구현하는 방법을 보여줄 수 있습니까? –

+0

@DeltaCharlie 실제로 내가 보여준 코드에서 지금 당장입니다. 예를 들어'EmployeeProjection'이'NationalityProjection'을 중첩했는지 확인하십시오. 그래서'EmployeeProjection'은'EmployeeProjection'보다 더 포괄적입니다. 'DepartmentProjection' 인터페이스에도 같은 이야기가 있습니다. –

관련 문제