2014-05-23 29 views
9

Tôi đang sử dụng Spring CrudRepository để truy vấn cơ sở dữ liệu. Làm thế nào tôi có thể tạo chữ ký phương thức (không phải viết câu lệnh chọn SQL) cho thuộc tính boolean?Cách truy vấn thuộc tính boolean với Spring CrudRepository?

Sau đây không hoạt động:

class MyEntity { 
     private boolean active; 
} 


interface MyEntityRepository implements CrudRepository<MyEntity, Long> { 
    List<MyEntity> findActive(); //or also: findNotActive(); 
} 

Trả lời

14

tôi sẽ làm:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> { 
    List<MyEntity> findByActive(Boolean active); 
} 

Sau đó các lớp dịch vụ sẽ là

public class MyEntityServiceImpl implements MyEntityService{ 


    public List<MyEntity> findActive() { 
     return myEntityRepository.findByActive(true); 
    } 
} 

CẬP NHẬT

Như đã chỉ ra bởi @OliverGierke bạn có thể đơn giản hóa kho của bạn nhiều hơn bằng cách thực hiện:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> { 
    List<MyEntity> findByActiveTrue(); //you could also use findByActiveFalse 
} 

Đối với tất cả các từ khóa được hỗ trợ, bạn nên xem phần

tạo Query

của reference documentation

+0

ok đó có thể là cách tốt hơn so với kết quả thực sự trực tiếp với giá trị boolean. – membersound

+0

@membersound Có lẽ là có! – geoand

+8

Câu trả lời hay, bạn có thể muốn thêm tùy chọn để trực tiếp sử dụng 'findByActiveTrue()' trong trường hợp bạn không muốn cung cấp tham số cho mỗi cuộc gọi. –

Các vấn đề liên quan