Tôi đang sử dụng JPA dữ liệu mùa xuân và cố gắng thêm truy vấn vào kho lưu trữ của mình. Tôi đã cố gắng để chỉ cần xây dựng các truy vấn mà không có chú thích @Query như:Dữ liệu JPA Spring "OR" truy vấn
List<Item> findByTypeAndStateOrStateAndStartDateBetween(Type type, State s, State s2, Date startDate, Date endDate);
Mục tiêu của tôi là xây dựng một truy vấn như vậy:
select * from item where type = ? and (state = ? or state = ?) and start_date between ? and ?
Vấn đề của tôi là với OR khoản. Có cách nào để đảm bảo có dấu ngoặc vuông không? Nếu không, logic không đúng. Các ví dụ tôi tìm thấy ở đây: http://static.springsource.org/spring-data/data-jpa/docs/1.0.0.M1/reference/html/#jpa.query-methods.query-creation
không có bất kỳ hoặc mệnh đề nào có nhiều hơn 1 cột.
Ngoài ra, có cách nào để chuyển vào Danh sách đối tượng không. Ví dụ: nếu tôi muốn tìm các mục có 3 trạng thái, tôi sẽ phải tạo một truy vấn khác, truy vấn này không có tỷ lệ rất tốt.
Cảm ơn.
EDIT:
Tôi đã tìm cách chuyển danh sách các tiểu bang bằng ký hiệu @Query. Bạn làm như vậy:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
Sau đó, bạn chỉ có thể chuyển danh sách vào phương thức làm tham số thứ hai. Vẫn không biết cách thực hiện điều này mà không sử dụng ký hiệu @Query.
Tôi nghĩ rằng đây là lý do tại sao mùa xuân dữ liệu cho phép bạn chỉ định truy vấn, nó chỉ có thể đi xa trong việc xác định những gì bạn muốn từ tên phương pháp riêng. Nó là tốt cho các truy vấn đơn giản nhưng một khi bạn tăng sự phức tạp, bạn tốt hơn nói cho nó chính xác những gì bạn muốn thay vì làm cho nó đoán. – Thevenin
Cộng với @Query dễ đọc hơn nhiều so với tên phương thức dài. – skel625
Cảm ơn, đây là kết luận tôi cũng đã đến. Chỉ cần sử dụng một @Query. – devo