Det är helt korrekt beteende.
not-null
attribut har två betydelser:
- stöd schemaexportverktyg
- kontrollera Entity in runtime (dvs. kontrollera inte databaskolumninställningarna)
Se:5.1. Kartläggningsdeklaration , extrahera:
Och 5.1.11. Egendom , extrahera:
Så, om dina klienter kör någon kod, som försöker:
getHibernateTemplate().saveOrUpdate(myEntity);
medan myEntity
saknar någon egenskap som är not-null="true"
det är korrekt att kasta ett körtidsundantag. Medan du är i din testmiljö ställer du sannolikt alltid egenskapen till någon inte nullvärde.
Och det finns till och med en fördel. DB och App är löst kopplade. Så om det behövs kan du göra fler begränsningar på appsidan, utan att vidröra DB (t.ex. du är inte tillåten)