Oracle
 sql >> база данни >  >> RDS >> Oracle

saveOrUpdate на Hibernate игнорира свойството на ненулева колона

Това е абсолютно правилно поведение.

not-null атрибутът има две значения:

  • поддръжка на инструменти за експортиране на схеми
  • проверете обекта по време на изпълнение (т.е. не проверявайте настройката на колоната на базата данни)

Вижте:5.1. Декларация за съпоставяне , извлечете:

И 5.1.11. Собственост , извлечете:

Така че, ако вашите клиенти изпълняват някакъв код, който опитва:

getHibernateTemplate().saveOrUpdate(myEntity);

докато myEntity липсва някакво свойство, зададено като not-null="true" правилно е да хвърляте изключение по време на изпълнение. Докато сте във вашата тестова среда най-вероятно винаги задавате свойството на някои не е нулева стойност.

И дори има предимство. DB и приложението са слабо свързани. Така че, ако е необходимо, можете да направите повече ограничения от страна на приложението, без да докосвате DB (напр. не ви е позволено)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Различно подреждане по подразбиране между ORACLE и PostgreSQL

  2. какво представлява материализираните възгледи в Oracle?

  3. Oracle SQL Transpose

  4. Ubuntu ORA-24960:атрибутът OCI_ATTR_USERNAME е по-голям от максималната допустима дължина от 255

  5. PreparedStatement се изпълнява успешно в oracle, но хвърля изключение в Microsoft SQL