2016-05-16 32 views

Trả lời

15

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ứt By từ khóa . Mọi thứ bạn đặt vào giữa findBy 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.

+0

Cảm ơn bạn đã mô tả – Nikita

0

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

+0

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ác vấn đề liên quan