Problemas no mapeamento por causa do CGLibs

2 respostas
K

Pessoal, o seguinte.

Implementei um modelo de controle transacional do hibernate que está disponível aqui no GUJ, vejam. O Problema, é que meu objeto persistente deixa de ser Model.Grupo por exemplo, e passa a ser Model.Grupo$$Enhancer$$ por causa da utilização do CGLibs para monitorar a execução de bytecode.
Resultado: na hora de persistir os dados, recebo uma MappingException dizendo que a classe Model.Grupo$$Enhancer$$ nao está mapeado. E claro, essa classe nao existe.

Alguém tem algum palpite?

2 Respostas

C

É porque você está anotando como transacional um método de uma classe persistida pelo Hibernate. Aí realmente dá problema.

O ideal é você ter uma interface de serviço e colocar as anotações em seus métodos.

K

Olá Davi.

Refiz meu modelo da forma que você disse. E realmente deixei de ter aquele MappingException.

O estranho agora, é que tudo (aparentemente) ocorre sem problema. Exceto o dado ser persistido no BD. Da forma que entendi seu artigo, acompanhei toda a execuçào dos métodos. Ele é verificado como transacional, é supostamente persistindo, tanto que nao é feita um rollback, nao retorna nenhum erro nem exceção. Tanto que esse é o log gerado.

2006-10-25 15:15:31,500 DEBUG hibernate.impl.SessionImpl  -> opened session at timestamp: 4758733338624000
2006-10-25 15:15:31,968 DEBUG hibernate.engine.IdentifierValue  -> id unsaved-value: 0
2006-10-25 15:15:31,968 DEBUG event.def.AbstractSaveEventListener  -> transient instance of: Model.Grupo
2006-10-25 15:15:31,968 DEBUG event.def.DefaultSaveOrUpdateEventListener  -> saving transient instance
2006-10-25 15:15:31,968 DEBUG hibernate.jdbc.AbstractBatcher  -> opening JDBC connection
2006-10-25 15:15:31,968 DEBUG hibernate.connection.DriverManagerConnectionProvider  -> total checked-out connections: 0
2006-10-25 15:15:31,968 DEBUG hibernate.connection.DriverManagerConnectionProvider  -> using pooled JDBC connection, pool size: 0
2006-10-25 15:15:31,984 DEBUG org.hibernate.SQL  -> select sequence_next_hi_value from hibernate_sequences where sequence_name = 'Grupo' with lock
2006-10-25 15:15:31,984 DEBUG hibernate.id.MultipleHiLoPerTableGenerator  -> new hi value: 20
2006-10-25 15:15:31,984 DEBUG event.def.AbstractSaveEventListener  -> generated identifier: 655360, using strategy: org.hibernate.id.MultipleHiLoPerTableGenerator
2006-10-25 15:15:31,984 DEBUG event.def.AbstractSaveEventListener  -> saving [Model.Grupo#655360]
2006-10-25 15:15:32,000 DEBUG hibernate.engine.Cascade  -> processing cascade ACTION_SAVE_UPDATE for: Model.Grupo
2006-10-25 15:15:32,000 DEBUG hibernate.engine.Cascade  -> done processing cascade ACTION_SAVE_UPDATE for: Model.Grupo
2006-10-25 15:15:32,031 DEBUG hibernate.engine.Cascade  -> processing cascade ACTION_SAVE_UPDATE for: Model.Grupo
2006-10-25 15:15:32,031 DEBUG hibernate.engine.Cascade  -> done processing cascade ACTION_SAVE_UPDATE for: Model.Grupo
2006-10-25 15:15:32,031 DEBUG hibernate.impl.SessionImpl  -> closing session
2006-10-25 15:15:32,031 DEBUG hibernate.jdbc.ConnectionManager  -> connection already null in cleanup : no action

Mas quando vou até o banco. Nao tem nada… :smiley:

Até verifiquei se não estava abrindo o banco errado. Mas até onde pude verificar, não encontrei nada. Você tem alguma noçào do que pode ser isso?

Muito obrigado novamente!

Criado 24 de outubro de 2006
Ultima resposta 25 de out. de 2006
Respostas 2
Participantes 2