java - 使用事务装饰器提交插入
问题描述
我有以下保存方法,它将对象插入并提交到我的数据库中:
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);
}
我需要做些什么才能让连接提交吗?
解决方案
注释将@Transactional
已经使用代理创建事务。所以你不需要从你的 sessionFactory 打开一个新的会话,你只需要得到当前的。这应该适合你:
Session session = HibernateUtil.getSessionFactory().getCurrenstSession();
session.save(this);
请让我知道它是否有效:)
推荐阅读
- arrays - 如何访问对象的子数组并将其推送到父数组中
- spring - 从目录 Spring 批处理 FileReadingMessageSource 中读取所有文件
- mysql - 如何动态读取查询结果?
- mysql - 为什么当 Hangfire 并行处理多个作业时 MySQL InnoDB 会产生如此多的死锁?
- java - Apache Camel JMS 异常循环
- sql-server - SQL Server - 条件/过滤外键。另一种方式
- java - 编译java文件创建serveclass(tomcat学习)
- python - Python 3.7:检查类型注释是否是泛型的“子类”
- python - Python Vscode 扩展 - 无法更改远程 jupyter notebook 内核
- powerbi - 在 Power BI 中使用带有日期的 switch true