Det er helt korrekt opførsel.
not-null
attribut har to betydninger:
- understøtte skemaeksportværktøjer
- tjek Entity in runtime (dvs. kontroller ikke databasekolonneindstillingen)
Se:5.1. Kortlægningserklæring , uddrag:
Og 5.1.11. Ejendom , uddrag:
Så hvis dine klienter kører noget kode, som prøver:
getHibernateTemplate().saveOrUpdate(myEntity);
mens myEntity
mangler en egenskab angivet som not-null="true"
det er korrekt at kaste en runtime undtagelse. Mens du er i dit testmiljø, sætter du højst sandsynligt altid egenskaben til nogle ikke null-værdi.
Og der er endda en fordel. DB og App er løst koblet. Så hvis det er nødvendigt, kan du lave flere begrænsninger på app-siden, mens du ikke rører ved DB (f.eks. har du ikke lov)