Standaard kolomwaarden in JPA

1. Inleiding

In deze zelfstudie kijken we naar standaardkolomwaarden in JPA.

We zullen leren hoe u ze kunt instellen als een standaardeigenschap in de entiteit en rechtstreeks in de SQL-tabeldefinitie.

2. Tijdens het aanmaken van een entiteit

De eerste manier om een ​​standaardkolomwaarde in te stellen, is door stel het rechtstreeks in als de waarde van een entiteitseigenschap:

@Entity openbare klasse Gebruiker {@Id privé Lange id; private String firstName = "John Snow"; privé Integer leeftijd = 25; private Boolean locked = false; }

Nu maken we elke keer een entiteit met de nieuw operator zal het de standaardwaarden instellen die we hebben verstrekt:

@Test void saveUser_shouldSaveWithDefaultFieldValues ​​() {User user = nieuwe gebruiker (); user = userRepository.save (gebruiker); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }

Deze oplossing heeft een nadeel. Als we de SQL-tabeldefinitie bekijken, zien we er geen standaardwaarde in:

maak een tabelgebruiker (id bigint niet nul beperking user_pkey primaire sleutel, naam varchar (255), leeftijd geheel getal, vergrendelde boolean);

Zo, als we ze overschrijven met nul, wordt de entiteit zonder enige fout opgeslagen:

@Test void saveUser_shouldSaveWithNullName () {User user = nieuwe gebruiker (); user.setName (null); user.setAge (null); user.setLocked (null); user = userRepository.save (gebruiker); assertNull (user.getName ()); assertNull (user.getAge ()); assertNull (user.getLocked ()); }

3. In de schemadefinitie

Maken een standaardwaarde rechtstreeks in de SQL-tabeldefinitie we kunnen de @Kolom annotatie en stel het in columnDefinition parameter:

@Entity openbare klasse Gebruiker {@Id Lange id; @Column (columnDefinition = "varchar (255) standaard 'John Snow'") private String naam; @Column (columnDefinition = "integer default 25") private Integer leeftijd; @Column (columnDefinition = "boolean default false") private Boolean vergrendeld; }

Met deze methode is de standaardwaarde aanwezig in de SQL-tabeldefinitie:

maak een tabelgebruiker (id bigint niet nul beperking user_pkey primaire sleutel, naam varchar (255) standaard 'John Snow', leeftijd geheel getal standaard 35, vergrendeld boolean standaard false);

En de entiteit wordt correct opgeslagen met de standaardwaarden:

@Test ongeldig saveUser_shouldSaveWithDefaultSqlValues ​​() {gebruiker gebruiker = nieuwe gebruiker (); user = userRepository.save (gebruiker); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }

Onthoud dat door deze oplossing te gebruiken, kunnen we een bepaalde kolom niet instellen op nulwanneer u de entiteit voor de eerste keer opslaat. Als we geen waarde opgeven, wordt de standaardwaarde automatisch ingesteld.

4. Samenvatting

In deze korte zelfstudie hebben we geleerd hoe u standaardkolomwaarden in JPA instelt.

Zoals altijd is de volledige broncode beschikbaar op GitHub.


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