我正在使用Spring Data JPA,并尝试向我的Repository中添加一个查询。我试图构建查询,但没有使用@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 没有任何带有多个列的or子句。
此外,是否有一种方法可以传入对象列表。例如,如果我想查找具有3个状态的项目,我将不得不创建另一个查询,这并不很可扩展。
谢谢。
编辑:
我弄清楚如何使用@Query注释传递状态列表。你可以这样做:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
然后你只需要将列表作为第二个参数传递给该方法即可。仍然不知道如何在不使用@Query注释的情况下完成此操作。