我正在使用Spring Data JPA并试图将查询添加到我的存储库。我试图只是生成查询,而不@Query注释,如:Spring 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
没有任何或超过1列的子句。
此外,有没有办法传入一个对象列表。例如,如果我想查找具有3个状态的项目,则必须创建另一个查询,该查询的扩展性不好。
谢谢。
编辑:
我想通了如何通过使用@Query符号国家的名单。你这样做:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
然后你可以传递一个列表中的方法作为第二个参数。仍然不知道如何在不使用@Query表示法的情况下做到这一点。
我想这就是为什么春季数据,您可以指定查询,就只能走这么远在决定你的方法名单独想要什么。对简单的查询来说很好,但是一旦你增加了复杂性,你最好告诉它你想要的是什么,而不是猜测它。 – Thevenin 2012-05-26 17:00:23
再加上@Query比冗长的方法名称更容易阅读。 – skel625 2012-05-26 23:48:18
谢谢,这也是我得出的结论。只需使用@Query。 – devo 2012-05-30 16:30:28