Hibernate - CGLib - Valores nulos em propriedades int

2 respostas
pierobom

Olá,

É sabido que os tipos primitivos não podem receber null.

E quando temos um atributo do tipo int e o seu respectivo valor no banco de dados é null, o Hibernate lança uma exceção por não conseguir injetar o valor no atributo do bean.

Para contornar isto eu já vi algumas sugestões para alterar o tipo da propriedade para java.lang.Integer. Desta forma a propriedade poderia receber null.

Alguém conhece alguma outra forma de solucionar este problema? Talvez configurando no Hibernate que o valor padrão para campos int seja 0.

Obrigado,
Jean Pierobom

2 Respostas

T

O correto é usar java.lang.Integer e tratar o caso null.

Por que é que 0 não é null?

Para ter uma idéia por que isso é necessário, pense em tirar uma média de salários de funcionários, sendo que os salários de alguns deles não estão cadastrados (ou seja, estão com o valor NULL em SQL).

Se você simplesmente usasse 0 para simbolizar null, você iria obter um valor incorreto para a média.

pierobom

Olá Thingol,

Obrigado pela resposta.

Na verdade é correto, dependendo do ponto vista. Nesta situação, estou trabalhando com um modelo legado em que não  a possibilidade de alterar os tipos de dados.

No meu caso não se preocupe, pois eu não vou precisar realizar estatística sobre estes dados. O que preciso saber é apenas se tem como carregar os dados via Hibernate sem que ocorra uma exceção quando um valor null for encontrado em uma coluna mapeada para um atributo int.

Quando não existia a classe wrapper Integer, os valores dos atributos int eram inicializados com 0.

Obrigado,
Jean Pierobom

Criado 28 de janeiro de 2008
Ultima resposta 28 de jan. de 2008
Respostas 2
Participantes 2