Java Persistence API - wartości domyślne

Java Persistence API - wartości domyślne
ST
  • Rejestracja:ponad 14 lat
  • Ostatnio:prawie 13 lat
  • Postów:21
0

Powiedzmy, ze mam w bazie następującą tabele:

Kopiuj
 CREATE TABLE Tabela(
"Imie" VARCHAR(50) NOT NULL,
"Kolor" VARCHAR(50) NOT NULL DEFAULT 'Czerwony'
)

Przy dodawaniu nowego rekordu w programie podaję tylko imię, a kolor ma być domyślny. Generowany jest wtedy następujący kod SQL:

Kopiuj
INSERT INTO Tabela (Imie, Kolor) VALUES (?, ?)

bind => [Artur, null] 

W efekcie kolor jest null i generowany jest wyjątek.
Jak zrobić, żeby przy podaniu samego imienia dodawany był domyślny kolor?
Kolor jest typu String, więc mógłbym w klasie encji zrobić coś takiego:
private String kolor="Czerwony";
ale co w przypadku, gdy polem jest inna encja np:
private InnaEncja encja;
Bez sensu jest specjalnie tworzyć obiekt tej encji w celu ustawienia wartości domyślnej. Chciałbym żeby było to pobierane z definicji tabeli.

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Z tego, co wyczytałem, spróbuj tak:

Kopiuj
bind => [Artur, DEFAULT] 

remigio
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 9 lat
  • Postów:357
0

albo możesz od strony bazy użyć NVL który zamieni ci miejsce oznaczone jako null na string podany przez Ciebie

Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:19 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Jeżeli mapujesz kolumnę w klasie to:

Kopiuj
    @Column(name="kolor", columnDefinition="Varchar(50) default 'czerwony' ")

Podobnie w XMLu.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.