Có sự khác biệt khi sử dụng các từ khóa mùa xuân dữ liệu JPA giữa:mùa xuân dữ liệu JPA chênh lệch giữa findBy/findAllBy
List<SomeEntity> findBySomeCondition();
và
List<SomeEntity> findAllBySomeCondition();
Có sự khác biệt khi sử dụng các từ khóa mùa xuân dữ liệu JPA giữa:mùa xuân dữ liệu JPA chênh lệch giữa findBy/findAllBy
List<SomeEntity> findBySomeCondition();
và
List<SomeEntity> findAllBySomeCondition();
Không, không có sự khác biệt giữa họ, họ sẽ thực hiện chính xác cùng một truy vấn, phần All
bị bỏ qua bởi Data mùa xuân khi phát sinh các truy vấn từ tên phương thức. Bit quan trọng duy nhất là từ khóa By
, bất kỳ thứ gì sau đây được coi là tên trường (ngoại trừ các từ khóa khác như OrderBy
có thể dẫn đến một số tên phương thức lạ như findAllByOrderByIdAsc
).
Điều này có nghĩa một cái gì đó như thế này là hoàn toàn hợp lệ:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
Và sẽ thực hiện chính xác các truy vấn SQL như:
List<SomeEntity> findBySomeCondition();
hoặc
List<SomeEntity> findAllBySomeCondition();
Cập nhật: tôi chưa bao giờ thấy bất kỳ mô tả chính thức nào về hành vi này iour trong tài liệu nhưng trong một recent blog post về 2.0 phát hành sắp tới của mùa xuân dữ liệu (Kay) nó được giải thích:
phương pháp phân tích mùa xuân dữ liệu của sử dụng từ khóa tiền tố như
find
,exists
,count
, vàdelete
và chấm dứtBy
từ khóa . Mọi thứ bạn đặt vào giữafind
vàBy
làm cho tên phương thức của bạn trở nên biểu cảm hơn và không ảnh hưởng đến nguồn gốc truy vấn.
phương pháp findBy được sử dụng nếu chúng ta muốn tìm theo tên hoặc một số tiêu chí khác như findByFirstName(String firstName);
findAll methods thường tìm thấy bằng cách cung cấp đặc điểm kỹ thuật
List<T> findAll(Specification<T> spec);
Xin xem tài liệu dưới đây cho rõ ràng hơn:
http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html
Không, phương pháp bạn viết là từ JPASpecificationExecutor. Tôi đang nói về JpaRepository. Tôi có thể tạo phương thức findAllByFirstName (String firstName) và nó sẽ hoạt động tương tự như findByFirstName. Trong câu hỏi này, tôi đang cố gắng hiểu sự khác biệt giữa chúng. – Nikita
Cảm ơn bạn đã mô tả – Nikita