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