sql >> Database teknologi >  >> RDS >> Oracle

Hibernates saveOrUpdate ignorerer kolonneegenskaben ikke-nul

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)



  1. Sådan opdeles array i rækker i Postgresql

  2. En anden mysqld-server, der kører på port 3306-fejl

  3. SQLAlchemy og joins, vi har ingen fremmednøgler

  4. SQL-reserverede nøgleord, der forårsager fejl under import af data fra tekstfil