Java >> Java tutorial >  >> Tag >> hibernate

Hibernate updateable =falsk UUID-felt er opdateret

I henhold til dokumentationen er updatable ejendom besluttede, om kolonnen ville være en del af opdateringserklæringen. Det betyder, at Hibernate ignorerer det, når der sendes opdateringer til databasen. Således vil tilstanden i hukommelsen og databasetilstanden være forskellige.

For at bekræfte dette, prøv at rydde sessionen (smid ud), før du ringer til User user2 = userRepo.findOne(1L)


Selvom det oprindelige spørgsmål allerede er blevet besvaret, vil jeg gerne fremhæve et vigtigt punkt for folk, der er nye med Hibernate da det kan hjælpe med at undgå en vis forvirring.

Javadoc'en til Hibernate 5.4 i @Column-annotationen siger for dets valgfrie element Opdaterbar:

(Valgfrit) Om kolonnen er inkluderet i SQL UPDATE-sætninger genereret af persistensudbyderen .

Hvis du udsender en opdateringserklæring med HQL eller ved hjælp af CriteriaUpdate , mod et felt, som du har kommenteret med @Column(updatable = false) , din opdateringserklæring udføres .

@Column(updatable = false) fungerer, når du bruger enten Hibernates update eller JPA's merge metode.

Ingen undtagelse vil blive kastet (i modsætning til f.eks.:@Column(nullable= false) da det skaber en begrænsning...), men den genererede opdateringssætning vil ikke inkludere det markerede felt.

For yderligere information er det virkelig et must at gøre dig bekendt med JPA's entitets livscyklustilstande og de metoder, der administrerer dem, som det kan ses på billedet nedenfor.

Samt jeg anbefaler stærkt at læse denne artikel, som forklarer dette i detaljer, og er kilden til det vedhæftede billede .


Java tag