我有一个表
Schools
,带有更新触发器SchoolsHistory
。当我通过简单的 SQL 语句更新时,触发器工作正常。当 Hibernate(通过 Spring)更新对象时,我得到这个异常:
org.springframework.jdbc.UncategorizedSQLException:Hibernate 操作:
无法插入:[...]; SQL 的未分类 SQLException [sql...]; SQL
状态[空];错误代码[0];该语句必须在任何操作之前执行 可以获得结果。嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:该语句必须是 在获得任何结果之前执行。
当我禁用触发器时,不会出现异常。
此外,触发器发生在 WebSphere 上,但不在 Tomcat 上,因此可能与集群等有关
有什么想法吗?
您的触发代码有问题。如果您说在编辑器中为
insert
语句手动输入 SQL 并且它有效,则意味着 Hibernate 使用不同的 insert
语句。您可以使用 Hibernate 属性 show_sql
:
<property name="show_sql">true</property>
查看您使用的 sql 语句与 Hibernate 生成的 sql 语句之间的差异。有一件事很重要,hibernate 在插入新记录时使用
id
列来设置主键。检查触发代码或关闭触发器是否可以解决问题。