MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Repositori pegas secara otomatis mentransmisikan entitas dengan tipe kelas yang berbeda

Untuk kedua repositori, Anda dapat menggunakan @Query anotasi untuk menentukan string kueri JSON MongoDB yang akan digunakan sebagai ganti kueri yang diturunkan dari nama metode (Anda harus tahu bahwa ada konvensi untuk menguraikan nama metode repositori dan untuk membuat kueri MongoDB).

Jadi, dengan menggunakan @Query , Anda dapat melakukan:

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

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

}

Di balik layar, ini akan menghasilkan kueri, mirip dengan yang ini:

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

Namun, ada masalah kecil dengan kode ini. Jika Anda mengubah nama kelas yang sepenuhnya memenuhi syarat dari Manager , maka kueri tidak akan menampilkan RuntimeException , tetapi tidak akan mengembalikan apa pun. Dalam hal ini Anda dapat menggunakan wildcard dalam @Query .

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

Kemudian, ketika Anda memanggil metode tersebut, Anda cukup melakukan:

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

Manager.class.getName() yang disediakan akan menggantikan ?0 wildcard dan kueri Anda akan dibuat dengan benar.

Hal yang sama berlaku untuk Employee repositori dengan perbedaan bahwa Anda harus memberikan nama kelas yang sepenuhnya memenuhi syarat dari Employee di @Query value atribut.

Info lebih lanjut:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kueri rekursif Mongodb tidak berfungsi seperti yang diharapkan dengan $graphLookup

  2. mongo/node TypeError:panggilan balik bukan fungsi pada kueri

  3. Kaa Java SDK tidak disinkronkan dengan KAA Sandbox MongoDB di AWS

  4. Bagaimana cara menerapkan tag posting di Mongo?

  5. Penyimpanan NodeJS + Ekspres + Sesi Mongo