当我在服务器上运行我的应用程序时,用户注册页打开,在输入所有详细信息并单击submit之后,我得到这个
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>
我输入的数据在mysql表中被删除了,但是仍然发生了这个异常,任何建议都会非常有用
暂无答案!
目前还没有任何答案,快来回答吧!