Oracle
 sql >> Datenbank >  >> RDS >> Oracle

saveOrUpdate von Hibernate ignoriert die Nicht-Null-Spalteneigenschaft

Es ist absolut korrektes Verhalten.

Der not-null Das Attribut hat zwei Bedeutungen:

  • Unterstützung von Tools zum Exportieren von Schemas
  • überprüfen Sie die Entität in der Laufzeit (d. h. überprüfen Sie nicht die Datenbankspalteneinstellung)

Siehe:5.1. Mapping-Deklaration , Auszug:

Und 5.1.11. Eigenschaft , Auszug:

Also, wenn Ihre Clients Code ausführen, der Folgendes versucht:

getHibernateTemplate().saveOrUpdate(myEntity);

während myEntity fehlt eine Eigenschaft, die als not-null="true" gesetzt ist Es ist richtig, eine Laufzeitausnahme auszulösen. In Ihrer Testumgebung setzen Sie die Eigenschaft höchstwahrscheinlich immer auf some kein Nullwert.

Und es gibt sogar einen Vorteil. DB und App sind lose gekoppelt. Bei Bedarf können Sie also mehr Einschränkungen auf der App-Seite vornehmen, ohne die DB zu berühren (z. B. Sie sind nicht erlaubt)