sql >> Database teknologi >  >> NoSQL >> MongoDB

Javers ENTITY_INSTANCE_WITH_NULL_ID ved brug af 2 databaser

Når du commiterer et objekt til JaVers, indlæses dets tidligere version fra JaversRepository og sammenlignes med den aktuelle version (den version, du lige har videregivet til commit()-metoden). I dette tilfælde finder JaVers den tidligere version ved hjælp af GlobalId forespørg så TypeName + enheds-id. Det er derfor, ID ikke kan være nul for enheder.

Der er to muligheder:

  1. Hvis null ID er normalt i denne klasse (i henhold til din domænemodel), skal du kortlægge det som ValueObject i JaVers.
  2. Hvis du bruger Hibernate, er der et almindeligt problem med doven indlæsning af proxyer. For visse forespørgsler returnerer Hibernate ikke dine rigtige domæneobjekter, men dynamiske proxyobjekter, som i det væsentlige er tomme (deraf null ID). Denne teknik ser måske smart ud, men gør dine objekter skrald, indtil de initialiseres af Hibernate.JaVers giver HibernateUnproxyObjectAccessHook som udfører rensningen:initialisering og fjernelse af proxy af dine domæneobjekter.

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

Denne hook er aktiveret som standard i javers-spring-boot-starter-sql men ikke i javers-spring-boot-starter-mongo . Hvis du bruger Mongo starter, skal du oprette en JaVers-bønne på egen hånd med krogen aktiveret, se JaversMongoAutoConfiguration .



  1. send downstream besked til google ccs med node js

  2. Mongoose gemmer ikke data til MongoDB

  3. Udfør forening i mongoDB

  4. Mongoose slutter sig til to samlinger og får kun specifikke felter fra den samlede samling