Я использую Spring Data JPA и пытаюсь добавить запрос в мой репозиторий. Я пытался просто создать запрос без аннотации @Query, например:
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
не имеют каких-либо или предложений с более чем 1 столбцом.
Кроме того, есть ли способ передать список объектов. Например, если бы я хотел найти элементы с тремя состояниями, мне пришлось бы создать еще один запрос, который не очень хорошо масштабируется.
Спасибо.
EDIT:
Я понял, как пройти список состояний, используя нотацию @Query. Вы делаете это так:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
Затем вы можете просто передать список методу в качестве второго параметра. Все еще не знаю, как это сделать, не используя нотацию @Query.