为了账号安全,请及时绑定邮箱和手机立即绑定

报错javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3392) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1385) at junit.StudentTest.

package junit;


import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.Work;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.model.Student;

public class StudentTest {
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;

	@Before
	public void init() {
		Configuration configure = new Configuration().configure();
		//ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
			//	.applySettings(configure.getProperties()).build(); 
		sessionFactory = configure.buildSessionFactory();
		session = sessionFactory.openSession();
		//transaction = session.beginTransaction();
	}

	@Test
	public void testSaveStudent() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date date = sdf.parse("1987-03-31");
			Student s = new Student(3, "aa", date, "上海");
			session.doWork(new Work() {
				
				@Override
				public void execute(Connection arg0) throws SQLException {
					// TODO Auto-generated method stub
					arg0.setAutoCommit(true);
					
				}
			});
			session.save(s);
			session.flush();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	@After
	public void destroy() {
		//transaction.commit();
		session.close();
		sessionFactory.close();
	}

}






使用dowork方法不成功,报错no tranction in progress

正在回答

2 回答

这么问题怎么破?

0 回复 有任何疑惑可以回复我~

33行注释解开....

1 回复 有任何疑惑可以回复我~
#1

萌萌哒猫头鹰 提问者

使用dowork方式就是可以不用事务提交啊,你看老师的视频中是将transaction注释掉的。这个和数据库的模式有关系,需要将mysql的一个配置参数改掉。现在我已经成功了。
2016-07-06 回复 有任何疑惑可以回复我~
#2

fevernova 回复 萌萌哒猫头鹰 提问者

请问是什么设置,怎么弄
2016-08-24 回复 有任何疑惑可以回复我~
#3

慕粉3917970 回复 萌萌哒猫头鹰 提问者

我也是相同的问题,请问mysql的配置参数应该怎么改?谢谢
2016-09-02 回复 有任何疑惑可以回复我~
#4

震灵 回复 萌萌哒猫头鹰 提问者

请问如何配置?谢谢
2017-02-03 回复 有任何疑惑可以回复我~
#5

qq_Wzl_3

请问怎么解决
2018-08-14 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

报错javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3392) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1385) at junit.StudentTest.

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信