gpt4 book ai didi

java - 由于 MS SQL 中 UNIQUE 约束的非标准行为,Spring/Hibernate 的解决方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:38 25 4
gpt4 key购买 nike

索引上有一个 UNIQUE 数据库约束,它不允许多个记录具有相同的列。

有一段代码,由 Hibernate (v2.1.8) 管理,做两个 DAO
getHibernateTemplate().save( theObject )
调用结果将两条记录输入到上述表中。

如果这段代码在没有事务的情况下执行,它会产生 INSERT、UPDATE,然后是另一个 INSERT 和另一个 UPDATE SQL 语句,并且工作正常。显然,顺序是先插入包含 DB NULL 的记录,然后用适当的数据更新它。

如果此代码在包含在单个 Spring 事务中的 Spring (v2.0.5) 下执行,则会导致两次插入,随后由于上述 UNIQUE 约束而立即发生异常。

此问题仅出现在 MS SQL 上由于它与 ANSI SQL 不兼容。它在 MySQL 和 Oracle 上运行良好。不幸的是,我们的解决方案是跨平台的,并且必须支持所有数据库。

有了这些技术,对于给定的问题,您首选的解决方法是什么?

最佳答案

您可以尝试刷新两次保存之间的 hibernate session 。这可能会强制 Hibernate 在第二次插入之前执行第一次更新。

另外,当你说 hibernate 正在插入 NULL 时,你的意思是每一列都是 NULL,还是只是 ID 列?

关于java - 由于 MS SQL 中 UNIQUE 约束的非标准行为,Spring/Hibernate 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/132444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com