MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Javers ENTITY_INSTANCE_WITH_NULL_ID при използване на 2 бази данни

Когато ангажирате обект към JaVers, неговата предишна версия се зарежда от JaversRepository и се сравнява с текущата версия (тази версия, която току-що сте предали на метода commit()). В този случай JaVers намира предишната версия, използвайки GlobalId заявка, така че TypeName + ID на обект. Ето защо ID не може да бъде нула за Entities.

Има две възможности:

  1. Ако null ID е нормален в този клас (според вашия модел на домейн), трябва да го картографирате като ValueObject в JaVers.
  2. Ако използвате Hibernate, има често срещан проблем с мързеливото зареждане на проксита. За определени заявки Hibernate не връща реалните ви обекти на домейн, а динамични прокси обекти, които по същество са празни (следователно нулев идентификатор). Тази техника може би изглежда умна, но прави вашите обекти боклук, докато не бъдат инициализирани от Hibernate. JaVers предоставя HibernateUnproxyObjectAccessHook който извършва почистването:инициализиране и премахване на прокси на обектите на вашия домейн.

    JaversBuilder.javers().withObjectAccessHook(нов HibernateUnproxyObjectAccessHook()).build()

Тази кука е активирана по подразбиране в javers-spring-boot-starter-sql но не и в javers-spring-boot-starter-mongo . Ако използвате Mongo starter, създайте JaVers bean самостоятелно, с активирана кука, вижте JaversMongoAutoConfiguration .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Маскиране на PII в MongoDB, Cassandra и Elasticsearch с DarkShield:…

  2. как да добавите нови полета в схемата solr

  3. Mongoose:намерете смесени типове документи с множество записи

  4. Как мога да генерирам ObjectId с mongoose?

  5. Команда Distinct(), използвана с skip() и limit()