production error - java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
valatharv Feb 25, 2009 10:58 PMAll of a sudden we got this error on production while calling projectHome.persist()
When I tried to create project again by calling projectHome.persist(), it worked.
Why it is that this is random error.
Please suggest as it is in production, below is the log and entity in question.
Error log:
---------
java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.entity.QuantExperimentHistoryRecords.project -> com.entity.Project
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:626)
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:99)
at com.session.ProjectHome.getUsers(Unknown Source)
at com.session.ProjectHome.persist(Unknown Source)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
.....
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.entity.QuantExperimentHistoryRecords.project -> com.entity.Project
at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:353)
at org.hibernate.engine.Cascade.cascade(Cascade.java:139)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:431)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
....
@Entity(name = "Project")
public class Project implements Equals, HashCode, ToString {
protected List<QuantExperimentHistoryRecords> quantExperimentHistoryRecords;
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy="project")
public List<QuantExperimentHistoryRecords> getQuantExperimentHistoryRecords() {
if (quantExperimentHistoryRecords == null) {
quantExperimentHistoryRecords = new ArrayList<QuantExperimentHistoryRecords>();
}
return this.quantExperimentHistoryRecords;
}
..setter
}
@Entity(name = "QuantExperimentHistoryRecords")
public class QuantExperimentHistoryRecords implements Equals, HashCode, ToString {
protected Project project;
@ManyToOne(fetch = FetchType.LAZY, optional=false)
public Project getProject() {
return project;
}
..setter
}
When I tried to create project again by calling projectHome.persist(), it worked.
Why it is that this is random error.
Please suggest as it is in production, below is the log and entity in question.
Error log:
---------
java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.entity.QuantExperimentHistoryRecords.project -> com.entity.Project
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:626)
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:99)
at com.session.ProjectHome.getUsers(Unknown Source)
at com.session.ProjectHome.persist(Unknown Source)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
.....
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.entity.QuantExperimentHistoryRecords.project -> com.entity.Project
at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:353)
at org.hibernate.engine.Cascade.cascade(Cascade.java:139)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:431)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
....
@Entity(name = "Project")
public class Project implements Equals, HashCode, ToString {
protected List<QuantExperimentHistoryRecords> quantExperimentHistoryRecords;
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy="project")
public List<QuantExperimentHistoryRecords> getQuantExperimentHistoryRecords() {
if (quantExperimentHistoryRecords == null) {
quantExperimentHistoryRecords = new ArrayList<QuantExperimentHistoryRecords>();
}
return this.quantExperimentHistoryRecords;
}
..setter
}
@Entity(name = "QuantExperimentHistoryRecords")
public class QuantExperimentHistoryRecords implements Equals, HashCode, ToString {
protected Project project;
@ManyToOne(fetch = FetchType.LAZY, optional=false)
public Project getProject() {
return project;
}
..setter
}