Това е абсолютно правилно поведение.
not-null
атрибутът има две значения:
- поддръжка на инструменти за експортиране на схеми
- проверете обекта по време на изпълнение (т.е. не проверявайте настройката на колоната на базата данни)
Вижте:5.1. Декларация за съпоставяне , извлечете:
И 5.1.11. Собственост , извлечете:
Така че, ако вашите клиенти изпълняват някакъв код, който опитва:
getHibernateTemplate().saveOrUpdate(myEntity);
докато myEntity
липсва някакво свойство, зададено като not-null="true"
правилно е да хвърляте изключение по време на изпълнение. Докато сте във вашата тестова среда най-вероятно винаги задавате свойството на някои не е нулева стойност.
И дори има предимство. DB и приложението са слабо свързани. Така че, ако е необходимо, можете да направите повече ограничения от страна на приложението, без да докосвате DB (напр. не ви е позволено)