최근에 JEE에서 Spring Boot로 바뀌 었습니다. 지금까지 그것을 사랑하고 있습니다. 하지만 조금 문제가 있습니다.스프링 데이터 동적 @Query는 매개 변수를 기반으로 할 수 있습니까?
봄의 데이터와 자신의 멋진 인터페이스 이제public Foo getParentWithChildren(long id, boolean isFetchChild, boolean isFetchPets) {
StringBuilder sql = new StringBuilder();
sql.append("select DISTINCT(p) from Parent p");
if(isFetchChild) {
sql.append(" left join p.child c");
} if(isFetchPets) {
sql.append(" left join p.pets pts");
}
sql.append(" where p.id=:id");
TypedQuery<Foo> query = em.createQuery(sql.toString(), Foo.class);
query.setParameter("id", id);
return query.getSingleResult();
}
내가 simlar 뭔가 인터페이스의 @query 주석을 사용하는 대신에 갖는하고 싶으면 : 나는 이런 식으로 뭔가를 조회하는 데 사용 게으른 참조를 가져 오는이 방법을 커스텀 구현을 작성합니다. 그러나 인터페이스 만 사용하여 비슷한 작업을 수행 할 수 있습니까?
아래의 예는 작동하지 분명하지만 난 당신이 내가 할 수 비슷한
@Query("select distinct(p) from Parent p " +
(fetchChild ? " left join p.child c" : "") +
(fetchPets ? " left join p.pets pts" : "") +
" where p.id=:id")
Foo getParentWithChildren(@Param("id") long id, @Param("fetchChild") boolean isFetchChild, @Param("fetchPets") boolean isFetchPets);
내가 뭔가를 acchieve하려고 이해 바랍니다?
아니,하지만이 정확한 경우, 당신은 isFetchChild''에 따라 적절한 하나를 인터페이스에서이 메소드를 생성하고 메소드를 호출 할 수 있습니다. –
실제로 실제 상위에는 5 개의 부울 매개 변수 (예 : 5 개의 부울 매개 변수)가 있습니다. 그리고 다른 조합도 있습니다. 때로는 아이 1과 3, 다른 시간 4, 때로는 모두 5 등을 원합니다. 그러면 가능한 모든 시나리오에 대해 메소드를 작성해야합니까? – Johan