MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Kho lưu trữ mùa xuân tự động truyền các thực thể với các loại lớp khác nhau

Đối với cả hai kho, bạn có thể sử dụng @Query chú thích để chỉ định một chuỗi truy vấn MongoDB JSON sẽ được sử dụng thay vì truy vấn bắt nguồn từ tên của phương thức (bạn phải biết rằng có một quy ước để phân tích cú pháp các tên phương thức của kho lưu trữ và để xây dựng các truy vấn MongoDB).

Vì vậy, bằng cách sử dụng @Query , bạn có thể làm:

@Repository
public interface ManagerRepository extends MongoRepository<Employee, String>

  @Query(value="{ '_class' : 'com.igmtechnology.gravity.core.init.test.Manager' }")
  List<Person> findAllManagers();

}

Phía sau, điều này sẽ tạo ra một truy vấn, tương tự như sau:

db.person.findAll({'_class' ; 'com.igmtechnology.gravity.core.init.test.Manager'});

Tuy nhiên, có một vấn đề nhỏ với mã này. Nếu bạn thay đổi tên lớp đủ điều kiện của Manager , thì truy vấn sẽ không ném ra một RuntimeException , nhưng sẽ không trả lại gì. Trong trường hợp này, bạn có thể sử dụng ký tự đại diện trong @Query .

@Query(value="{ '_class' : ?0 }")
List<Person> findAllManagers(String className);

Sau đó, khi bạn gọi phương thức, bạn chỉ có thể thực hiện:

managerRepository.findAllManagers(Manager.class.getName());

Manager.class.getName() được cung cấp sẽ thay thế ?0 ký tự đại diện và truy vấn của bạn sẽ được tạo đúng cách.

Tương tự đối với Employee kho lưu trữ với sự khác biệt mà bạn phải cung cấp tên lớp đủ điều kiện của Employee trong @Query giá trị value thuộc tính.

Thông tin thêm:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhân bản một Tập hợp bản sao hoặc phiên bản MongoDB

  2. Trong MongoDB mapreduce, làm cách nào để làm phẳng đối tượng giá trị?

  3. Sắp xếp phía máy chủ bằng Mongoose (mongodb + node.js)

  4. MongoDB và Asp Core chỉ cập nhật một cặp khóa:giá trị thay vì toàn bộ mô hình

  5. Sails.js kiểm tra nội dung trước khi tải tệp lên MongoDB bằng skipper (tệp hợp lệ, thay đổi kích thước hình ảnh, v.v.)