通过配置文件从生成的Hibernate INSERT语句中删除空主键字段

问题描述

我正在配置一个大型的开源工具(JBPM),该工具使用Hibernate进行持久化。 JBPM随H2一起提供,但我需要它与SQL Server一起运行。我反复看到:

2020-09-21 13:11:54,937 FINE  [com.microsoft.sqlserver.jdbc.internals.SQLServerStatement] (default task-5) SQLServerPreparedStatement:126: calling sp_executesql: SQL:insert into QueryDefinitionStore (id,qExpression,qName,qSource,qTarget) values (null,@P0,@P1,@P2,@P3) select SCOPE_IDENTITY() AS GENERATED_KEYS
2020-09-21 13:11:54,969 FINE  [com.microsoft.sqlserver.jdbc.internals.SQLServerException] (default task-5) *** SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: DEFAULT or NULL are not allowed as explicit identity values. Msg 339,Level 16,State 1,DEFAULT or NULL are not allowed as explicit identity values.

因为该工具依赖于将空“ id”转换为自动递增的int。但正如一个很久以前回答的查询指出的那样

How to insert identity column in SQL Server with null values like in MySQL

SQL Server允许既未设置主键又未设置自动增量的字段为空。对于我的组织而言,编辑JBPM的标签是不切实际的,因此“可以使用Hibernate配置文件(例如hibernate.cfg.xml)来更改查询,以不为特定表发送空的“ id”字段吗?不发送,它将作为数据库中的自动增量生成并工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)