当我单击register时,数据存储在数据库中,但它会给出;javax.persistence.TransactionRequiredException:没有正在进行的事务”;
当我在服务器上运行我的应用程序时,用户注册页面打开,在输入所有详细信息并单击submit之后,我得到了这个消息当我单击register时,数据存储在数据库中,但它会给出;javax.persistence.TransactionRequiredException:没有正在进行的事务”;,java,mysql,hibernate,servlets,Java,Mysql,Hibernate,Servlets,当我在服务器上运行我的应用程序时,用户注册页面打开,在输入所有详细信息并单击submit之后,我得到了这个消息 javax.persistence.TransactionRequiredException: no transaction is in progress org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3467) org.hibernate.internal.Sess
javax.persistence.TransactionRequiredException: no transaction is in progress
org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3467)
org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1427)
org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1423)
main.java.com.package.web.Register.doPost(Register.java:49)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
我的Register.java是
package main.java.com.package.web;
import javax.servlet.annotation.WebServlet;
import org.hibernate.Transaction;
import org.hibernate.Session;
import main.java.com.package.entity.UsersEntity;
import main.java.com.package.util.HibernateUtil;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import java.io.IOException;
@Transactional
@WebServlet("/Register")
public class Register extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
System.out.println("check1");
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String username = request.getParameter("username");
String password = request.getParameter("password");
UsersEntity user = new UsersEntity();
user.setFirstName(firstName);
user.setLastName(lastName);
user.setUsername(username);
user.setPassword(password);
Transaction tx = null;
Session session = HibernateUtil.getSessionFactory().openSession();
try{
tx = session.beginTransaction();
session.persist(user);
session.flush();
tx.commit();
// session.getTransaction().commit();
}catch (Exception e){
response.getWriter().println("User could not be saved");
response.getWriter().println(e);
session.getTransaction().rollback();
session.close();
return;
}
session.flush();
session.close();
response.getWriter().print("Registered Successfully");
response.addCookie(new Cookie("username",username));
response.addCookie(new Cookie("password",password));
response.sendRedirect("login");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.sendRedirect("register.jsp");
}
}
我的hibernate.cfg.xml是
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="sessionFactory">
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/demo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">1</property>
<property name="connection.autocommit">true</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="main.java.com.package.entity.UsersEntity"/>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
密码
jdbc:mysql://localhost/demo
根
org.hibernate.dialogue.mysqldialogue
1.
真的
真的
更新
我输入的数据在mysql表中被排序,但仍然会发生此异常。任何建议都会非常有用。为什么在
尝试后调用会话.flush()
。。。catch
block,当事务已经结束时?@crizzis我没有在内部使用flush try。。。ctach块之前和之后,我改变了代码,我忘记删除这一行,它的工作非常感谢!为什么在尝试后调用会话.flush()
。。。catch
block,当事务已经结束时?@crizzis我没有在内部使用flush try。。。ctach块之前和之后,我改变了代码,我忘记删除这一行,它的工作非常感谢!