Note that there are some explanatory texts on larger screens.

plurals
  1. POorg.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
    text
    copied!<p>In my project I have <code>User</code>, <code>Role</code>, <code>UserRole</code> and <code>BloodGroup</code> entities. Firstly I take <code>List&lt;BloodGroup&gt;</code> from DB and set to <code>User</code>. Then I give <code>User</code> and <code>Role</code> entites to <code>UserRole</code>. After that I insert <code>User</code> to DB, then I try to insert <code>UserRole</code>, but I get an error. When I look to DB, the ID of <code>BloodGroup</code> isn't inserted in <code>User</code> table.</p> <p>If I choose the first <code>BloodGroup</code> in the list, I get an error. Other options is normal.</p> <p>I look at the internet, I found <code>cascade = CascadeType.ALL</code>, but this add same data to <code>BloodGroup</code>, which means I have more Arh+ <code>BloodGroup</code>.</p> <p>The entities:</p> <pre><code>@Entity @Table(name="USERS") public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) private long userid; @OneToMany(mappedBy="user") private List&lt;Userrole&gt; userroles; //bi-directional many-to-one association to Bloodgroup @ManyToOne @JoinColumn(name="BLOODGRUPID") private Bloodgroup bloodgroup; } </code></pre> <hr> <pre><code>@Entity public class Bloodgroup implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) private int bloodgroupid; private String bloodgroupname; @OneToMany(mappedBy="bloodgroup") private List&lt;User&gt; users; } </code></pre> <hr> <pre><code>@Entity public class Userrole implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) private long userroleid; private Timestamp createddate; private Timestamp deleteddate; private String isactive; //bi-directional many-to-one association to Role @ManyToOne @JoinColumn(name="ROLEID") private Role role; //bi-directional many-to-one association to User @ManyToOne @JoinColumn(name="USERID") private User user; } </code></pre> <p>Controller:</p> <pre><code>user.setBloodgroup(bloodGroupImpl.getBloodGroupById(bGroup)); user.setUserid(userImpl.insertUserProfile(user)); userRoleImpl.insertUserRole(user,role); </code></pre> <p>DAO:</p> <pre><code>public void insertUserRole(User user, Role role) { Session session =getHibernateTemplate().getSessionFactory().getCurrentSession(); Userrole uRole = new Userrole(); uRole.setIsactive("1"); uRole.setRole(role); uRole.setUser(user); session.save(uRole); session.flush(); } public void insertUserProfile(User user) { Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); session.save(user); } </code></pre> <p>Log:</p> <pre><code>Hibernate: insert into IU.Userrole (userroleid, createddate, deleteddate, isactive, ROLEID, USERID) values (default, ?, ?, ?, ?, ?) 05.Şub.2012 19:23:29 com.sun.faces.application.ActionListenerImpl processAction SEVERE: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.iu.eblood.model.Bloodgroup javax.faces.el.EvaluationException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.iu.eblood.model.Bloodgroup at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:103) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 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:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload