Ola a todos…
Estou fazendo uma aplicação (um controle de contratos) e esta rodando beleza…
mas agora descobri um pequeno probleminha…
Para gravar e consultar o contrato esta certo… porém quando estou na tela para alterar um Contrato, estou tendo problemas para alterar
as propriedades que tem associação @ManyToOne(fetch=FetchType.LAZY) . O lazy esta funcionando certinho não da
o erro org.hibernate.LazyInitializationException. .Mas também não altera para o valor novo… entende? Mas se deixo como
EAGER . altera o valor normalmente… e os atributos que são do Contrato, como: data, descricao, tipo,ect… esses alteram corretamente…
Por exemplo, tenho minha entidade Contrato que faz a associação com Setor (setor tem apenas os atributos id e descricao):
@ManyToOne(fetch=FetchType.LAZY,targetEntity=Setor.class)
@JoinColumn(name = "idsetor", referencedColumnName = "idsetor")
private Setor setor = new Setor();
get e set...
ai na tela quando escolho outro setor, e mando alterar continua com o mesmo valor de antes…
Debugando (estou usando Eclipse Europa) percebi que dentro do objeto Contrato , o id do Setor esta null,
mas no CGLIB$CALLBACK_0 CGLIBLazyInitializer (id=178) aparece o id do antigo valor e ainda, dentro do target aparece o id do novo valor…
mas quando da o update (merge), é setado o valor antigo novamente…
então… conseguiram entender o que esta acontecendo??
se conseguirem me ajudar, agradeço muito…
abraço