Standard søjleværdier i JPA

1. Introduktion

I denne vejledning ser vi på standardkolonneværdier i JPA.

Vi lærer, hvordan du indstiller dem som en standardegenskab i enheden såvel som direkte i definitionen af ​​SQL-tabellen.

2. Mens du opretter en enhed

Den første måde at indstille en standardkolonneværdi på er sæt det direkte som en enhedsegenskabsværdi:

@Entity offentlig klasse bruger {@Id privat Lang id; private String firstName = "John Snow"; privat heltalealder = 25; privat boolsk låst = falsk; }

Nu, hver gang vi opretter en enhed ved hjælp af ny operatør indstiller de standardværdier, vi har angivet:

@Test ugyldig saveUser_shouldSaveWithDefaultFieldValues ​​() {Brugerbruger = ny bruger (); bruger = userRepository.save (bruger); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }

Der er en ulempe ved denne løsning. Når vi ser på definitionen af ​​SQL-tabel, ser vi ikke nogen standardværdi i den:

Opret tabelbruger (id bigint ikke null begrænsning user_pkey primær nøgle, navn varchar (255), alders heltal, låst boolsk);

Så, hvis vi tilsidesætter dem med nul, vil enheden blive gemt uden nogen fejl:

@Test ugyldig saveUser_shouldSaveWithNullName () {Bruger bruger = ny bruger (); user.setName (null); user.setAge (null); user.setLocked (null); bruger = userRepository.save (bruger); assertNull (user.getName ()); assertNull (user.getAge ()); assertNull (user.getLocked ()); }

3. I skemadefinitionen

At skabe en standardværdi direkte i definitionen af ​​SQL-tabellen vi kan bruge @Kolonne kommentar og indstil dens columnDefinition parameter:

@Entity offentlig klasse bruger {@Id Lang id; @Column (columnDefinition = "varchar (255) standard 'John Snow'") privat strengnavn; @Column (columnDefinition = "heltalsstandard 25") privat heltalealder; @Column (columnDefinition = "boolsk standard falsk") privat boolsk låst; }

Ved hjælp af denne metode vil standardværdien være til stede i definitionen af ​​SQL-tabellen:

Opret tabelbruger (id bigint ikke null begrænsning user_pkey primær nøgle, navn varchar (255) standard 'John Snow', alder heltal standard 35, låst boolsk standard falsk);

Og enheden gemmes korrekt med standardværdierne:

@Test ugyldig saveUser_shouldSaveWithDefaultSqlValues ​​() {Brugerbruger = ny bruger (); bruger = userRepository.save (bruger); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }

Huske på, at ved at bruge denne løsning kan vi ikke indstille en given kolonne til nulnår du gemmer enheden for første gang. Hvis vi ikke angiver nogen værdi, indstilles standardværdien automatisk.

4. Resume

I denne korte vejledning har vi lært, hvordan man indstiller en standard kolonneværdier i JPA.

Som altid er den fulde kildekode tilgængelig på GitHub.