这是我的模型类。我们使用setter和getters方法来初始化变量:
package org.koushik.javabrains.dto;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class UserDetails {
@Id
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
这是我的模型对象,并为模型类中创建的变量赋值:
package org.koushik.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
//import org.hibernate.Transaction;
import org.koushik.javabrains.dto.UserDetails;
public class HibernateTest {
public static void main(String arg[])
{
UserDetails user = new UserDetails();
user.setUserId(1);
user.setUserName("First User");
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.beginTransaction().commit();
}
}
答案 0 :(得分:2)
替换
session.beginTransaction().commit();
与
session.getTransaction().commit();
注意使用Spring @Transactional
将无需自行管理交易
答案 1 :(得分:0)
您正试图通过调用begin transaction
在事务中开始事务再次提交时,会导致上述异常。
并且消息清楚地表明不支持嵌套事务。
所以
为下面的会话创建单个事务,并使用相同的会话完成您的会话
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();