mapowanie fnalnych zmiennych za pomocą JPA

0

Dokumentacja hibernate mówi: The entity class must not be final. No methods or persistent instance variables of the entity class may be final..

Co można zrobić, jeśli potrzebuję finalnego pola? np. mam klasę Employee a w nim atrybut Pesel (zaszyfrowany). Pesel się nigdy nie zmieni, więc powinno się go raz podawać. Albo co jak mam klasę Location z 'City', longitude i latitude. Klasa mogła by być finalna, a atrybuty to już na pewno, ale wtedy nie będzie pustego konstruktora i się JPA wywali.

1

Zawsze możesz użyć:

@Column(updatable=false)

Czyli pola nie będzie można zupdatować.

1

Nie wiem jak to w statniej specyfikacji jest, ale wiem jak było jakiś czas temu.

Klasa nie może być finalna, ale niektóre implemenectacje JPA dopuszczały pola final. Zupełnie normalnie. W hibernate/jpa nie było z tym problemu.
Stosowałem takie rozwiązanie.
Dodatkowo entity JPA wymaga (zupełnie durnego) konstruktora domyślnego (gdzie takim polom finalnym nie wiadomo co nawet przypisać. straszny WTF).
Ale robi się taki konstruktor i daje go jako protected.

Tu masz przykład z jednego z moich przykładowych projektów (hibernate):
https://github.com/airomem/galakpizza/blob/master/galakpizza_h/src/main/java/pl/setblack/exp/galakpizza/domain/Order.java

1 użytkowników online, w tym zalogowanych: 0, gości: 1