Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O saveOrUpdate do Hibernate ignora a propriedade de coluna não nula


É um comportamento absolutamente correto.

O not-null atributo tem dois significados:
  • ferramentas de exportação de esquema de suporte
  • verifique a Entidade em tempo de execução (ou seja, não verifique a configuração da coluna do banco de dados)

Veja:5.1. Declaração de mapeamento , extrair:

E 5.1.11. Propriedade , extrair:

Então, se seus clientes executam algum código, que tenta:
getHibernateTemplate().saveOrUpdate(myEntity);

enquanto o myEntity está faltando alguma propriedade definida como not-null="true" ele está correto em lançar uma exceção de tempo de execução. Enquanto estiver em seu ambiente de teste, você provavelmente sempre define a propriedade como algum não valor nulo.

E há uma vantagem mesmo. O banco de dados e o aplicativo são fracamente acoplados. Portanto, se necessário, você pode fazer mais restrições no lado do aplicativo, sem tocar no banco de dados (por exemplo, você não tem permissão)