Ola pessoal, estou com um problema ao tentar persistir um objeto no meu banco de dados.
Minhas relações são @OneToMany Unidirecionais, disseram a mim para substituir o LAZY para EAGER, porém continuou com o mesmo erro, creio que o erro esta no modo do relacionamento, mas não sei o motivo disso se eu estou APENAS linkando objetos em:
projetMediator.setProjet(projet);
projetMediator.setTaches(taches);
projetMediator.setActivites(activites);
projetMediator.setPhases(phases);
e depois os criando o objeto ProjetMediator.
Segue o stacktracerdo erro:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.test.ems2.model.Activite
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)
at com.test.ems2.dao.GenericDAO.save(GenericDAO.java:64)
at com.test.ems2.dao.ProjetMediatorDAO.save(ProjetMediatorDAO.java:1)
at com.test.ems2.facade.ProjetMediatorFacade.createProjetMediator(ProjetMediatorFacade.java:20)
at com.test.ems2.mb.ProjetMediatorMB.createProjetMediator(ProjetMediatorMB.java:315)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.test.ems2.filter.AdminPagesFilter.doFilter(AdminPagesFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.test.ems2.filter.LoginCheckFilter.doFilter(LoginCheckFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.test.ems2.model.Activite
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:834)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:827)
at org.hibernate.engine.spi.EJB3CascadingAction$1.cascade(EJB3CascadingAction.java:52)
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:387)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:330)
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208)
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:416)
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:357)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:333)
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208)
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165)
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:449)
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:292)
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78)
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:843)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:818)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:822)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)
... 42 more
Método createProjetMediator da minha classe ProjetMediatorMB.java (Scope: ViewScope) :
[code]public void createProjetMediator() {
try {
activites = getActivites();
activitiesDual = pickListActivites();
activites = activitiesDual.getTarget();
tachesDual = pickListTaches();
taches = getTaches();
taches = tachesDual.getTarget();
projetFacade = getProjetFacade();
projet.setStatusProjet(true); //project activate
projet.setTaches(taches);
projetFacade.updateProjet(projet);
projetMediator = getProjetMediator();
projetMediator.setProjet(projet);
projetMediator.setTaches(taches);
projetMediator.setActivites(activites);
projetMediator.setPhases(phases);
getProjetMediatorFacade().createProjetMediator(projetMediator); //linha do erro
closeDialog();
displayInfoMessageToUser("Created With Sucess");
loadProjetMediators();
resetProjetMediator();
} catch (Exception e) {
keepDialogOpen();
displayErrorMessageToUser("Ops, we could not create. Try again later");
e.printStackTrace();
}
}[/code]
O ProjetMediator.java:
[code]public class ProjetMediator implements Serializable {
private static final long serialVersionUID = 1L;
public static final String FIND_PROJECT_BY_ID_PROJECTMEDIATOR = "ProjetMediator.findProjetByIdProjetMediator";
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToOne
@JoinColumn(name="id_projet")
private Projet projet;
@OneToMany( targetEntity=Tache.class, fetch=FetchType.LAZY, cascade=CascadeType.ALL )
private List<Tache> taches;
@OneToMany( targetEntity=Tache.class, fetch=FetchType.LAZY, cascade=CascadeType.ALL )
private List<Activite> activites;
@OneToMany( targetEntity=Tache.class, fetch=FetchType.LAZY, cascade=CascadeType.ALL )
private List<Phase> phases;[/code]
Muito obrigado pela ajuda.