Zadane vrijednosti stupaca u JPA

1. Uvod

U ovom uputstvu proučit ćemo zadane vrijednosti stupaca u JPA.

Naučit ćemo kako ih postaviti kao zadano svojstvo u entitetu, kao i izravno u definiciji SQL tablice.

2. Tijekom stvaranja entiteta

Prvi način postavljanja zadane vrijednosti stupca je na postavite ga izravno kao vrijednost svojstva entiteta:

@ Entitet javne klase Korisnik {@Id private Long id; private String firstName = "John Snow"; privatno Integer dob = 25; privatno logičko zaključano = lažno; }

Sada ćemo svaki put stvoriti entitet pomoću novi postavit će zadane vrijednosti koje smo naveli:

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

Postoji jedan nedostatak ovog rješenja. Kad pogledamo definiciju SQL tablice, u njoj nećemo vidjeti nikakvu zadanu vrijednost:

izraditi korisnika tablice (id bigint nije null ograničenje user_pkey primarni ključ, ime varchar (255), dobna cijela brojka, zaključana logička vrijednost);

Tako, ako ih poništimo sa null, entitet će biti spremljen bez ikakve pogreške:

@Test void saveUser_shouldSaveWithNullName () {Korisnik korisnik = novi korisnik (); user.setName (null); user.setAge (null); user.setLocked (null); user = userRepository.save (korisnik); assertNull (user.getName ()); assertNull (user.getAge ()); assertNull (user.getLocked ()); }

3. U definiciji sheme

Stvoriti zadana vrijednost izravno u definiciji SQL tablice možemo koristiti @Stupac napomena i postavi svoj stupacDefinicija parametar:

@Entity javni razred korisnika {@Id Long id; @Column (columnDefinition = "varchar (255) default 'John Snow'") ime privatnog niza; @Kolona (columnDefinition = "cijeli broj zadanih 25") private Integer age; @Column (columnDefinition = "boolean default false") private Boolean zaključan; }

Korištenjem ove metode zadana vrijednost bit će prisutna u definiciji SQL tablice:

stvoriti korisnika tablice (id bigint nije null ograničenje user_pkey primarni ključ, ime varchar (255) zadani 'John Snow', dobna cijela vrijednost zadana 35, zaključana logička zadana vrijednost false);

I entitet će biti pravilno spremljen sa zadanim vrijednostima:

@Test void saveUser_shouldSaveWithDefaultSqlValues ​​() {Korisnik korisnik = novi korisnik (); user = userRepository.save (korisnik); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }

Zapamti to pomoću ovog rješenja nećemo moći postaviti zadani stupac na nullprilikom prvog spremanja entiteta. Ako ne pružimo nikakvu vrijednost, zadana vrijednost automatski će se postaviti.

4. Sažetak

U ovom kratkom vodiču naučili smo kako postaviti zadane vrijednosti stupaca u JPA.

Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.