To jest absolutnie poprawne zachowanie.
not-null
atrybut ma dwa znaczenia:
- obsługa narzędzi eksportu schematów
- sprawdź Entity w czasie wykonywania (tzn. nie sprawdzaj ustawienia kolumny bazy danych)
Zobacz:5.1. Deklaracja mapowania , wyciąg:
Oraz 5.1.11. Nieruchomość , wyciąg:
Tak więc, jeśli Twoi klienci uruchamiają jakiś kod, który próbuje:
getHibernateTemplate().saveOrUpdate(myEntity);
podczas gdy myEntity
brakuje niektórych właściwości ustawionych jako not-null="true"
jest poprawny w zgłaszaniu wyjątku środowiska uruchomieniowego. W środowisku testowym najprawdopodobniej zawsze ustawiasz właściwość na niektóre wartość nie pusta.
I jest nawet przewaga. DB i aplikacja są luźno powiązane. Więc w razie potrzeby możesz wprowadzić więcej ograniczeń po stronie aplikacji, nie dotykając bazy danych (np. nie możesz)