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

Javers ENTITY_INSTANCE_WITH_NULL_ID saat menggunakan 2 database

Saat Anda mengkomit objek ke JaVers, versi sebelumnya dimuat dari JaversRepository dan dibandingkan dengan versi saat ini (versi yang baru saja Anda lewati ke metode commit()). Dalam hal ini JaVers menemukan versi sebelumnya menggunakan GlobalId query jadi TypeName + ID entitas. Itu sebabnya ID tidak boleh nol untuk Entitas.

Ada dua kemungkinan:

  1. Jika null ID normal di kelas ini (sesuai dengan model domain Anda), Anda harus memetakannya sebagai ValueObject di JaVers.
  2. Jika Anda menggunakan Hibernate, ada masalah umum dengan proxy lazy loading. Untuk kueri tertentu, Hibernate tidak mengembalikan objek domain asli Anda tetapi objek proxy dinamis yang pada dasarnya kosong (karenanya null ID). Teknik ini mungkin terlihat pintar tetapi membuat objek Anda menjadi sampah sampai diinisialisasi oleh Hibernate.JaVers menyediakan HibernateUnproxyObjectAccessHook yang melakukan pembersihan:menginisialisasi dan menghapus proxy objek domain Anda.

    JaversBuilder.javers().withObjectAccessHook(HibernateUnproxyObjectAccessHook() baru).build()

Kait ini diaktifkan secara default di javers-spring-boot-starter-sql tapi tidak di javers-spring-boot-starter-mongo . Jika Anda menggunakan starter Mongo, buat kacang JaVers sendiri, dengan kait diaktifkan, lihat JaversMongoAutoConfiguration .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di MongoDB mapreduce, bagaimana saya bisa meratakan objek nilai?

  2. MongoDB :Urutan indeks dan urutan kueri harus cocok?

  3. Isi + Agregat di Luwak

  4. Bagaimana cara menangani migrasi skema luwak dengan benar?

  5. Kumpulan Replika MongoDB:Perbedaan ukuran disk di Node Primer dan Sekunder