我正在使用 Spring with Hibernate(和SQL Server数据库)。对于我的一个实体,我需要生成一个数字和字符串的组合的PK ..像ABC1001,DEF1002等。
我正在为我的实体使用'assigned
'密钥,因为这种PK(数字和字符串的组合,即ABC 1001)无法通过普通序列/标识生成。
我想要的是
如果有任何失败,请回滚事务,即回滚实体插入并回滚对Identity进行的任何更改
我想到的一种方法是:创建一个可以执行前两步的存储过程(生成PK,增量标识,将数字与字符串组合),然后将密钥分配给实体并调用session.save ()。
我的问题是我必须使用HibernateCallBack来执行我的程序,我将不得不处理JDBC连接。一旦方法完成,我将不得不关闭JDBC连接,然后在下一步中我可以继续保存我的实体(session.save()
)。
我找不到执行这两件事的方法[即在单个事务中调用该过程并调用session.save()]。我正在使用Spring提供的声明式事务。
有没有办法在单个事务中执行这两件事,所以如果实体插入失败,我甚至可以回滚对Identity所做的更改?
或者你可以建议更好的策略吗?