É 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)