我在MS SQL 2008中有一个父表和子表,并尝试使用启用了cascade的hibernate执行保存调用。 重要的表规范:父表具有标识列,子表具有长度为50的varchar列。
环境:spring,jboss 7.1.1,hibernate 3,jta事务(通过从jndi获取事务,从代码中启动/提交/回滚事务)
问题在以下情况下出现:我在子表varchar列中插入的数据超过50.
只有在执行commit时才会触发子表上的insert查询,并且由于char长度而无法插入。因此,我得到一个异常,我捕获异常并执行回滚,回滚失败,因为事务处于非活动状态。
问题:这里的问题是父数据被提交,这不是我想要的。如何确保事务完全回滚?