首页 > 解决方案 > 使用事务装饰器提交插入

问题描述

我有以下保存方法,它将对象插入并提交到我的数据库中:

 public void save() {

    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    session.save(this);
    session.getTransaction().commit();

}

但是,如果我使用装饰器,它实际上永远不会提交到数据库:

@Transactional
public void save() {

    Session session = HibernateUtil.getSessionFactory().openSession();
    session.save(this);

}

我需要做些什么才能让连接提交吗?

标签: javaspringhibernate

解决方案


注释将@Transactional已经使用代理创建事务。所以你不需要从你的 sessionFactory 打开一个新的会话,你只需要得到当前的。这应该适合你:

Session session = HibernateUtil.getSessionFactory().getCurrenstSession();
session.save(this);

请让我知道它是否有效:)


推荐阅读