2016-02-11 22 views
9

Tôi gặp vấn đề lạ đối với kho lưu trữ dữ liệu xuân mongodb .. Tôi muốn loại trừ một trường khỏi yêu cầu findAll của mình. Làm thế nào tôi có thể đạt được điều này ?Dữ liệu mùa xuân Mongodb kho findAll loại trừ trường

này hoạt động hoàn hảo:

@Query(fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findByObjectIdAndServiceIgnoreCase(String objectId, String service, Pageable pageable); 

Nhưng không có cơ hội cho findAll:

@Query(fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findAll(Pageable pageable); 

này ném:

Nguyên nhân: org.springframework.data.mapping.PropertyReferenceException : No Tìm bất động sảnTìm thấy loại Obje ctHistory! tại org.springframework.data.mapping.PropertyPath. (PropertyPath.java:75) tại org.springframework.data.mapping.PropertyPath.create (PropertyPath.java:327) tại org.springframework.data.mapping .PropertyPath.create (PropertyPath.java:307) tại org.springframework.data.mapping.PropertyPath.from (PropertyPath.java:270) tại org.springframework.data.mapping.PropertyPath.from (PropertyPath.java : 241) tại org.springframework.data.repository.query.parser.Part (Part.java:76)

Trả lời

3

Thêm. một tiêu chí lọc rỗng sẽ làm các trick cho bạn:

@Query(value = "{}", fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findAll(Pageable pageable); 

Rõ ràng, khi bạn không xác định value tham số để lọc kết quả, Spring dữ liệu cố gắng để đưa ra một truy vấn từ tên phương thức và bằng cách nào đó, không nhận ra ý nghĩa đặc biệt của findAll.

+0

Nhưng tôi không nhận được nó, nó hoạt động như tôi ở chức năng khác –

+0

Thanks for the help anyway! –

+0

Trong trường hợp khác, truy vấn có thể phát sinh từ tên phương thức. –

2

Vì bạn không cung cấp một giá trị lĩnh vực để chú thích @Query của bạn, mùa xuân sẽ cố gắng để chuyển đổi tên phương pháp FindAll đến một truy vấn mà không tôn trọng Sáng tạo kỹ thuật truy vấn từ mùa xuân. Vui lòng xem thông số here.

này nên làm việc cho bạn:

@Query(value = "{}", fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findAll(Pageable pageable); 
+0

Đó là một ý tưởng hợp lệ nhưng It's 'MongoDB' không phải là 'JPA', vì vậy bạn không thể sử dụng' JPQL'. –

+0

Thực ra bạn có thể, Spring sẽ chuyển đổi sang kho dữ liệu bên dưới. Vui lòng xem [ví dụ này] (http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-streaming) từ Tài liệu chính thức của dữ liệu Spring Mongo. – omahjoub

+0

Phần đầu tiên của tài liệu này có nghĩa là tổng quát nhưng đã sử dụng các ví dụ cụ thể của JPA' cho mục đích trình diễn. Mọi thứ sau http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#reference là dành cho mongo –

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