Bom Galera, mais um problema daqueles, espero q me ajudem como de costume;
Possuo uma tabela de profissionais com os seguintes campos:
id
nome
cpf
id_assistente
onde o id_assistente nada mais é do que um profissional previamente cadastrado, ou seja, o relacionamento está feito com o campo id, e esse campo id_assistente pode ser vazio, já fiz os códigos está tudo funcionando bem quando insiro um valor para o id_assistente, se deixo em branco é mostrada a seguinte mensagem de erro, peguei só a parte q acho a mais importante:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.org.sis.entities.Profissional.id_assistente -> br.org.sis.entities.Profissional
org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:376)
org.hibernate.engine.Cascade.cascade(Cascade.java:163)
org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:456)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy32.salvar(Unknown Source)
br.org.sis.controller.ProfissionalController.salvar(ProfissionalController.java:456)
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.apache.el.parser.AstValue.invoke(AstValue.java:172)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
o bean foi feito assim:
public class Profissional...
private String id;
private String nome;
private String cpf;
private Profissional id_assistente;
.
.
.
@Id
@Column(name = "id", unique = true, nullable = false, length = 14)
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
.
.
.
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_assistente", nullable = true)
public Profissional getId_assistente() {
return id_assistente;
}
public void setId_assistente(Profissional id_assistente) {
this.id_assistente = id_assistente;
}
sei q a mensagem de erro é bem clara; o problema é como salvar o objeto transiente antes se os dois são da mesma entidade e o problema acontece exatemente quando persisto o objeto Profissional?
e outra dúvida, o MappedBy, tem q existir, mesmo nesse caso? Pq se sim, não consgui fazer;
Estou usando Hibernate, JPA, Spring;
Obrigado