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.