estava eu feliz da vida usando a implementação toplink do JPA com meus @EntityListeners funcionando normalmente como manda o figurino. Acontece que por falta de findByExample eu troquei a implementação por Hibernate3 e agora os meus digníssimos @EntityListeners simplesmente pararam de funcionar. Alguem sabe me dizer o que devo fazer?
A princípio a única alteração feita foi quanto a informar ao JPA quais classes são persistentes: Com o toplink eu estava declarando as classes no xml de configuração, e com Hibernate estou informando as classes através de .addAnnotatedClass(MinhaClasse.class). Grato desde já pela ajuda sempre presente no forum.
Po kra… muito estranho isso… eu aki uso com o Hibernate trank…
Eu tenho uma entidade assim:
...importjavax.persistence.EntityListeners;...@Entity@EntityListeners(ObjetoComEstadosJPAListener.class)@SequenceGenerator(name="sqassunto",sequenceName="sqassunto")publicclassAssuntoimplementsIObjetoComEstados{// construtores.. get and set..@Id@GeneratedValue(strategy=GenerationType.AUTO,generator="sqassunto")privateLongid;@Column(nullable=false)privateStringdescricao;@TransientprivateEstadoObjetoestadoInterno=ESTADO_INICIAL;}
E na classe ObjetoComEstadosJPAListener:
publicclassObjetoComEstadosJPAListener{@PostLoadpublicvoidpostLoad(IObjetoComEstadosobj){Loggerlog=Logger.getLogger(obj.getClass().getName());if(null==obj){log.log(Level.SEVERE,"object not loaded");return;}obj.setEstadoInterno(IObjetoComEstados.EstadoObjeto.ANTIGO_INALTERADO);}
Então, uso esse listener para setar o valor em um atributo transiente…
Como ta a sua? até agora so usei @PostLoad…
Uma coisa q talvez possa estar acontecendo… eu nao sei pq nunca mexi com TopLink, mas tem alguma chance de vc estar na sua classe utilizando uma implementação do @EntityListeners do TopLink juntamente com o Hibernate?
rissato
cara… já tentei de tudo…
o pior é que não dá exception e eu já tirei todos os jars do toplink…
to achando que é algum problema de versão talvez… ou não né!? :?
B
baison
rissato:
cara… já tentei de tudo…
o pior é que não dá exception e eu já tirei todos os jars do toplink…
to achando que é algum problema de versão talvez… ou não né!? :?
Bom, eu aki to usando as seguintes versões:
Hibernate 3.2.6 GA
Hibernate Annotations 3.3.1 GA
Hibernate EntityManager 3.3.2 GA
Pode ser realmente algum prob de versão mesmo…
Mas o que acontece exatamente? ele nao passa pelo código do seu Listener? se vc colocar um System.out.println( “Teste” ) la no método da sua classe com o @PostLoad ou qualquer outro, ele nao executa?
Da uma olhada nas versões então… se tiver tudo ok, faz um projeto separado, so com Hibernate e um Bean simples… e ve… pode ser alguma incompatibilidade… seila… muito louco…