스프링 데이터 JPA를 사용 중이고 리포지토리에 쿼리를 추가하려고합니다. 난 그냥 같은 @query 주석없이 쿼리를 구축을 위해 노력 하였다스프링 JPA 데이터 "OR"쿼리
List<Item> findByTypeAndStateOrStateAndStartDateBetween(Type type, State s, State s2, Date startDate, Date endDate);
내 목표는과 같이 쿼리를 작성하는 것입니다
select * from item where type = ? and (state = ? or state = ?) and start_date between ? and ?
내 문제는 OR 절입니다. 괄호가 있는지 확인하는 방법이 있습니까? 그렇지 않으면 논리가 올바르지 않습니다. 여기에있는 예제는 다음과 같습니다. http://static.springsource.org/spring-data/data-jpa/docs/1.0.0.M1/reference/html/#jpa.query-methods.query-creation
하나 이상의 절이있는 절이 없습니다.
또한 개체 목록을 전달하는 방법이 있습니까? 예를 들어 3 개 주에서 항목을 찾으려면 다른 쿼리를 만들어야하는데, 그렇지 않은 쿼리는 잘 작성되지 않습니다.
감사합니다.
편집 : 나는 @query 표기법을 사용하여 상태 목록으로 전달하는 방법을 알아 냈
. 그렇게하면 다음과 같이됩니다.
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
그러면 두 번째 매개 변수로 메서드에 목록을 전달할 수 있습니다. 아직 @Query 표기법을 사용하지 않고이 작업을 수행하는 방법을 알지 못합니다.
나는 봄 데이터 쿼리를 지정할 수 있습니다 이유는 생각에, 그것은 단지 당신이 혼자 메소드 이름에서 원하는 것을 결정까지 갈 수 있습니다. 단순한 쿼리에서는 문제가 없지만 복잡성을 높이면 추측하기보다는 원하는 것을 정확하게 전달하는 것이 더 낫습니다. – Thevenin
@Query는 긴 메서드 이름보다 훨씬 읽기 쉽습니다. – skel625
고마워, 이것 역시 내가 온 결론이다. @Query를 사용하십시오. – devo