Olá. Estou desenvolvendo um projeto com Hibernate e venho enfrentando alguns problemas.
Tenho uma entidade que possui vários atributos do tipo List. Então para facilitar minha vida na hora de inserir valores e não precisar fazer um método para adicionar objetos em cada atributo eu fiz um método com Reflection que consegue pegar a Lista corrente e adicionar um novo item nela. No entanto quando vou persistir com saveOrUpdate, a aplicação gera uma exception.
List < Object > objList = ( List < Object > ) getMethod.invoke ( curriculo );
if ( ( objList == null ) || ( objList.size ( ) == 0 ) )
{
objList = new ArrayList < Object > ( );
objList.add ( obj );
}
else
{
boolean found = false;
for ( Object object : objList )
{
if ( ( ( Integer ) objGetIdMethod.invoke ( object ) ).equals ( ( Integer ) objGetIdMethod.invoke ( obj ) ) )
{
objList.set ( objList.indexOf ( object ) , obj );
found = true;
break;
}
}
if ( !found )
objList.add ( obj );
}
setMethod.invoke ( curriculo , objList );
DAO.saveOrUpdate ( curriculo );
Eu omiti as linhas que procuram pelos métodos a serem invocados. O objeto curriculo foi populado através de uma consulta, então eu chamo o getLista e jogo em minha lista, então eu procuro por um objeto que contenha o mesmo id que o que eu quero inserir ou alterar. Se encontrar ele troca os objetos, senão ele adiciona um novo na lista. Depois disso chamo o método setLista e coloco a lista atualizada e mando persistir.
Estou tendo o seguinte exception quando tento alterar esta lista:
Alguém pode me ajudar a consertar isso ou mesmo me indicar uma maneira melhor de fazer isto?
Obrigado.