Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类org.hibernate.TransactionException org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)_Java_Hibernate - Fatal编程技术网

类org.hibernate.TransactionException org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)

类org.hibernate.TransactionException org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100),java,hibernate,Java,Hibernate,我的应用程序是gwt,下面的hibernate是我的代码 public boolean changeUserStatus(long id, String status){ try { Session session = HibernateFactory.openSession(); Transaction transaction = session.beginTransaction(); User user = (User ) sessi


我的应用程序是gwt,下面的hibernate是我的代码

 public boolean changeUserStatus(long id, String status){
    try {
        Session session = HibernateFactory.openSession();
        Transaction transaction = session.beginTransaction();
        User user = (User ) session.get(User.class, id);
        user.setStatus(status);
        session.saveOrUpdate(user);
        transaction.commit(); 
        HibernateFactory.close(session);
    } catch (Exception e) {
        throw e;
    }
 }
staktrace

class org.hibernate.TransactionException
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)
sun.reflect.GeneratedMethodAccessor1829.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489)
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
java.lang.Thread.run(Thread.java:744)

请参阅完整堆栈跟踪 当我尝试提交代码时,它将给出事务异常。
有人能告诉我代码中有什么错误吗?

试试session.merge()

saveOrUpdate()执行以下操作:

如果该对象在此会话中已持久化,则在以下情况下不执行任何操作: 与会话关联的另一个对象具有相同的标识符, 如果对象没有identifier属性,则引发异常,并将其保存() 如果对象的标识符的值已分配给新的 实例化对象,save()如果对象的版本是由 或),并且版本属性值相同 指定给新实例化对象的值,否则保存() 更新()对象

而merge()则截然不同:

如果当前存在具有相同标识符的持久实例 与会话关联,将给定对象的状态复制到 如果当前没有持久实例,则返回持久实例 与会话关联,请尝试从数据库加载,或 创建一个新的持久性实例,并返回持久性实例 给定实例不会与会话关联,而是 保持分离


以下是原始答案:-

您好,您能提供完整的堆栈跟踪吗?