我正在使用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