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.