MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Javers ENTITY_INSTANCE_WITH_NULL_ID przy korzystaniu z 2 baz danych

Kiedy zatwierdzasz obiekt do JaVers, jego poprzednia wersja jest ładowana z JaversRepository i porównywana z bieżącą wersją (ta wersja, którą właśnie przekazałeś do metody commit()). W tym przypadku JaVers znajduje poprzednią wersję przy użyciu GlobalId zapytanie tak TypeName + identyfikator jednostki. Dlatego identyfikator nie może być pusty dla jednostek.

Istnieją dwie możliwości:

  1. Jeśli null ID jest normalne w tej klasie (zgodnie z modelem Twojej domeny), powinieneś zmapować go jako WartośćObject w JaVach.
  2. Jeśli korzystasz z Hibernate, często występuje problem z leniwym ładowaniem serwerów proxy. W przypadku niektórych zapytań Hibernate nie zwraca prawdziwych obiektów domeny, ale dynamiczne obiekty proxy, które są zasadniczo puste (stąd null ID). Ta technika może wyglądać na sprytną, ale sprawia, że ​​obiekty są śmieciami, dopóki nie zostaną zainicjowane przez Hibernate. JaVers zapewnia HibernateUnproxyObjectAccessHook która zajmuje się czyszczeniem:inicjowaniem i usuwaniem proxy obiektów domeny.

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

Ten zaczep jest domyślnie włączony w javers-spring-boot-starter-sql ale nie w javers-spring-boot-starter-mongo . Jeśli używasz startera Mongo, samodzielnie utwórz fasolkę JaVers z włączonym hakiem, zobacz JaversMongoAutoConfiguration .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie Agregat MongoDb łączy dwie kolekcje

  2. MongoDB odpowiednik SQL COUNT GROUP BY

  3. Błąd obsługi MongoDB podczas wstawiania w Javie

  4. Jak czekać w Node.js

  5. php mongodb '$or' wyszukiwanie wyrażeń regularnych