Problemas ao atualizar a estrutura de tabela usando JPA

Caros colegas,

Estou usando o JPA em meu projeto e utilizei a seguinte propriedade no arquivo persistence.xml

<property name="hibernate.hbm2ddl.auto" value="update"/>

Ao modificar uma das classes de meu projeto, através da adição do atributo int idade, percebi que a coluna correspondente foi alterada corretamente. Por utilizar a estratégia update, os dados antigos foram preservados e o conteúdo da coluna idade foi “setada” como null para cada um dos registros já existentes.
Ao executar a minha aplicação, o novo objeto consegue ser inserido de forma correta, porém uma exceção é lançada ao recuperar os dados da tabela (através do método getResultList()) devida a existência do valor null em um campo que deve ser do tipo integer (Eu uso o MySQL).

Segue a exceção

Caused by: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of entities.Usuario.idade
	at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:106)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:360)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:221)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3594)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
	at org.hibernate.loader.Loader.doQuery(Loader.java:752)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.doList(Loader.java:2228)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
	at org.hibernate.loader.Loader.list(Loader.java:2120)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
	... 74 more
Caused by: java.lang.IllegalArgumentException: Can not set int field entities.Usuario.idade to null value
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
	at sun.reflect.UnsafeIntegerFieldAccessorImpl.set(Unknown Source)
	at java.lang.reflect.Field.set(Unknown Source)
	at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:102)
	... 90 more

A minha dúvida é, se neste caso, a configuração de valor default para um campo que não tenha sido preenchido resolveria o problema. Caso positivo, qual anotação utilizar? (É que eu ainda estou aprendendo a utilizar o JPA)

Obrigado!

Amigo,

O problema é simples, acredito que vc esteja usando um tipo primitivo(nesse caso um int) como o tipo do dado Idade de sua classe, correto ?

Nesse caso, troque seu tipo de dado de int para Integer, uma vez que Integer é objeto, ele aceita valores null, ao contrário de int.

[]'s