Hibernate saveOrUpdate() em composite-id

Oi Pessoal,

Seguinte, eu tenho algumas tabelas com composite-id, e as vezes, quando eu dou um saveOrUpdate(<pojo>), eu recebo uma excessão dizendo que não acha a linha e por isso não dá INSERT, DELETE ou UPDATE

SEVERE&#58; Could not synchronize database state with session net.sf.hibernate.HibernateException&#58; SQL insert, update or delete failed &#40;row not found&#41; at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch&#40;NonBatchingBatcher.java&#58;25&#41; at net.sf.hibernate.persister.EntityPersister.update&#40;EntityPersister.java&#58;688&#41; at net.sf.hibernate.persister.EntityPersister.update&#40;EntityPersister.java&#58;641&#41; at net.sf.hibernate.impl.ScheduledUpdate.execute&#40;ScheduledUpdate.java&#58;52&#41; at net.sf.hibernate.impl.SessionImpl.executeAll&#40;SessionImpl.java&#58;2382&#41; at net.sf.hibernate.impl.SessionImpl.execute&#40;SessionImpl.java&#58;2336&#41; at net.sf.hibernate.impl.SessionImpl.flush&#40;SessionImpl.java&#58;2204&#41; at net.sf.hibernate.transaction.JDBCTransaction.commit&#40;JDBCTransaction.java&#58;61&#41; at com.ibm.shop_br_readytobuy.bid.migrar.MigrarBid.main&#40;MigrarBid.java&#58;116&#41;

Este problema só acontece se o dado vai ser inserido, se ele vai ser atualizado ele dá certo.

Eu dei uma pesquisada e achei duas coisas, um fala para por o unsaved-value no mapeamento.
Outro falou para usar o método .isUnsaved() da interface Interceptor. Mas pelo que eu li, este método .isUnsaved() é usado pelo método .saveOrUpdate() do Session. E não achei a classe que implementa o .isUnsaved().

Então, pergunta, como dou um saveOrUpdate() em um POJO que tem composite-id ??

Obrigado

o unsaved-value nao vai funcionar para composite-id.

Você precisa fazer seu interceptor e implementar o isUnsaved.
http://www.hibernate.org/hib_docs/api/net/sf/hibernate/Interceptor.html

Depois na hora de pegar a session do Hibernate::

Session session = sf.openSession&#40; new SeuInterceptor&#40;&#41; &#41;;

ai no Interceptor vc controla se o objeto deve ou nao ser alterado.

Nossa Ricardo,

Num brinca comigo.
:frowning: :frowning:
Eu tinha visto o Interceptor, o pessoal tinha falado que provavelmente eu ia ter que implementar ela, mas manja quando vc não quer acredita?

Mas… blz…
Valeu cara.
:smiley:

Vo lá fazer isso então.
Obrigadao.