Alapértelmezett oszlopértékek a JPA-ban
1. Bemutatkozás
Ebben az oktatóanyagban megvizsgáljuk a JPA alapértelmezett oszlopértékeit.
Megtanuljuk, hogyan kell őket beállítani alapértelmezett tulajdonságként az entitásban, valamint közvetlenül az SQL tábla meghatározásában.
2. Entitás létrehozása közben
Az alapértelmezett oszlopérték beállításának első módja a állítsa be közvetlenül entitás tulajdonságértékként:
@Entity public class User {@Id private Long id; privát karakterlánc keresztnév = "John Snow"; magán egész életkor = 25; privát logikai zárolt = hamis; }
Most minden alkalommal létrehozunk egy entitást a új operátor beállítja az általunk megadott alapértelmezett értékeket:
@Test void saveUser_shouldSaveWithDefaultFieldValues () {User user = new User (); user = userRepository.save (felhasználó); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }
Ennek a megoldásnak egyetlen hátránya van. Ha megnézzük az SQL tábla definícióját, nem látunk benne alapértelmezett értéket:
tábla felhasználó létrehozása (id bigint nem null kényszer user_pkey elsődleges kulcs, név varchar (255), kor egész szám, zárolt logikai érték);
Így, ha felülírjuk őket nulla, az entitás hiba nélkül mentésre kerül:
@Test void saveUser_shouldSaveWithNullName () {Felhasználó felhasználó = új Felhasználó (); user.setName (null); user.setAge (null); user.setLocked (null); user = userRepository.save (felhasználó); assertNull (user.getName ()); assertNull (user.getAge ()); assertNull (user.getLocked ()); }
3. A Séma definícióban
Készíteni alapértelmezett érték közvetlenül az SQL tábla meghatározásában használhatjuk a @Oszlop annotációt és állítsa be azt oszlopDefiníció paraméter:
@Entity public class User {@Id Long id; @Column (columnDefinition = "varchar (255) alapértelmezett 'John Snow'") privát karakterlánc neve; @ Oszlop (columnDefinition = "egész alapértelmezett 25") privát Egész kor; @Column (columnDefinition = "logikai érték alapértelmezett hamis") privát logikai érték zárolva; }
Ezzel a módszerrel az alapértelmezett érték jelen lesz az SQL tábla meghatározásában:
tábla felhasználó létrehozása (id bigint nem null kényszer user_pkey elsődleges kulcs, név varchar (255) alapértelmezett 'John Snow', egész életkor alapértelmezett 35, lezárt logikai alapértelmezett hamis);
És az entitás megfelelően el lesz mentve az alapértelmezett értékekkel:
@Test void saveUser_shouldSaveWithDefaultSqlValues () {Felhasználó felhasználó = új Felhasználó (); user = userRepository.save (felhasználó); assertEquals (user.getName (), "John Snow"); assertEquals (user.getAge (), 25); assertFalse (user.getLocked ()); }
Emlékezz arra ennek a megoldásnak a használatával nem tudjuk beállítani az adott oszlopot nullaaz entitás első mentésekor. Ha nem adunk meg értéket, akkor az alapértelmezett értéket automatikusan beállítjuk.
4. Összefoglalás
Ebben a rövid bemutatóban megtanultuk, hogyan állítsunk be alapértelmezett oszlopértékeket a JPA-ban.
Mint mindig, a teljes forráskód elérhető a GitHubon.