Gravar dados de duas tabelas relacionadas [Hibernate]

Iai

Tenho um formulario de cadastro de produtos, onde tenho alem dos dados do produto 4 campos que serão salvos em outra tabela. Porem estou com problemas na hora de persistir. Ex: tenho um objeto Produto e outro PrecoVenda. Então preciso gravar o novo id desse produto nos novos preços para venda. Porem está dando um erro na hora de gravar os preços, pois ele não acha a referencia do produto.

Gostaria de saber se alguem pode me ajudar a resolver isso.

Obrigado

Post o error ai pra ser analisado :wink:

vlw amigo!!

o erro é o seguinte:

[code]org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.cienci.wisa.modelo.Produto
org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
org.hibernate.type.EntityType.replace(EntityType.java:253)
org.hibernate.type.AbstractType.replace(AbstractType.java:153)
org.hibernate.type.TypeFactory.replace(TypeFactory.java:495)
org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:377)
org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:179)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:123)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53)
org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:677)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:665)
br.com.cienci.wisa.dao.Dao.atualiza(Dao.java:56)
br.com.cienci.wisa.logic.ProdutoLogic.armazenaProduto(ProdutoLogic.java:152)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117)
org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.cienci.wisa.logic.DaoInterceptor.intercept(DaoInterceptor.java:65)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.cienci.wisa.logic.FactoryInterceptor.intercept(FactoryInterceptor.java:39)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:90)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

[/code]

se vc puder me ajudar…

o erro esta relacionado com a chave estrangeira…ele não está salvando na tabela de preços pq ele não encontra o produto no banco…

coloque ai seu mapeamento, vc esta utilizando cascade !?
pelo que entedi vc persiste primeiramente Produto e logo apos PrecoVenda, mas ao persistir PrecoVenda ele lança a excesão certo?!
caso não esteja usando cascate, tente um flush() depois de saveOrUpdate de Produto !