我有一些带有一些遗留触发器的DB2数据库,我正在从jdbc迁移到Hibernate。我的问题是,当我通过Hibernate将数据存储到DB时,我被DB2抛出的错误所困扰。
错误-746说:
如果正在修改表(通过INSERT,DELETE,UPDATE或MERGE), 低级嵌套SQL无法访问该表 言。
如果SELECT语句正在访问任何表,则不能有表 在任何较低级别修改(通过INSERT,DELETE,UPDATE或MERGE) 嵌套SQL语句。
在我的情况下,我正在尝试保存实体(由另一个已保存在此事务中的实体所拥有),但在DB中有前插入触发器,它检查约束(例如“这个实例是唯一一个有flag设置为true?“)。但是在尝试执行此触发器时,会抛出错误。
我在用另一个触发器保存另一个实体时已经有类似的错误,我这样做就像通过JDBC存储有问题的实体,通过hibernate加载它并保存其余的实体。但这种方法在我看来有点麻烦。有没有办法解决这个问题?为什么Hibernate不能正常工作,而JDBC却是这样?在这两种情况下,它都在一次交易中。我试图在存储有问题的实体之前刷新数据,但没有帮助。