我正在使用 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 列的 or 子句。
另外,有没有办法传入对象列表。例如,如果我想查找具有 3 个状态的项目,我将不得不创建另一个查询,该查询不能很好地扩展。
谢谢。
编辑:
我想出了如何使用@Query 表示法传递状态列表。你这样做:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
然后,您可以将一个列表作为第二个参数传递给该方法。如果不使用 @Query 表示法,仍然不知道如何做到这一点。