Standard kolonneverdier i JPA

1. Introduksjon

I denne opplæringen vil vi se på standard kolonneverdier i JPA.

Vi lærer hvordan du setter dem inn som en standardegenskap i enheten, så vel som direkte i definisjonen av SQL-tabellen.

2. Mens du oppretter en enhet

Den første måten å angi en standard kolonneverdi på er sett det direkte som en enhetsverdi:

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

Nå, hver gang vi oppretter en enhet ved hjelp av ny operatør vil den sette standardverdiene vi har oppgitt:

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

Det er en ulempe med denne løsningen. Når vi ser på definisjonen av SQL-tabellen, ser vi ikke noen standardverdi i den:

opprett tabellbruker (id bigint ikke null begrensning user_pkey primærnøkkel, navn varchar (255), alders heltall, låst boolsk);

Så, hvis vi overstyrer dem med null, blir enheten lagret uten feil:

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

3. I skjemadefinisjonen

Å lage en standardverdi direkte i SQL-tabelldefinisjonen vi kan bruke @Kolonne kommentar og angi dens columnDefinition parameter:

@Entity public class User {@Id Long id; @Column (columnDefinition = "varchar (255) standard 'John Snow'") privat strengnavn; @Column (columnDefinition = "heltall standard 25") privat Heltall alder; @Column (columnDefinition = "boolsk standard usann") privat boolsk låst; }

Ved å bruke denne metoden vil standardverdien være til stede i definisjonen av SQL-tabellen:

opprett tabellbruker (id bigint ikke null begrensning user_pkey primærnøkkel, navn varchar (255) standard 'John Snow', alder heltall standard 35, låst boolsk standard false);

Og enheten blir lagret riktig med standardverdiene:

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

Husk at ved å bruke denne løsningen vil vi ikke kunne sette en gitt kolonne til nullnår du lagrer enheten for første gang. Hvis vi ikke gir noen verdi, vil standardverdien bli satt automatisk.

4. Oppsummering

I denne korte opplæringen har vi lært hvordan du setter standard kolonneverdier i JPA.

Som alltid er hele kildekoden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found