Oracle的触发器和hibernate的主键冲突

Oracle的触发器和hibernate的主键冲突,第1张

hibernate 的配置采用navtive所以id是采用当前数据库自增方式sequence 而你oracle本身中又有触发器自增主键,你在插入数据时,sequence被加了两次。所以你插入的数据都是2.4.6这样的偶数。

解决方法:

1.删除触发器

2.hibernate中的主键方式采用其他的。比如uuid

我遇到过了, 这个问题非常苦逼啊.

我对比了一下 SQL Server 与 Oracle

如果是 SQL Server 的 identity 自增列

插入数据 SaveChanges 以后, 那个自增列的字段, 会自动更新的。

但是如果是 Oracle 的 触发器 + Sequence 的自增

插入数据 SaveChanges 以后, 那个自增列的字段,还是 0

也就是当插入1行数据的时候。SaveChanges 了。

SQL Server 里面, 那个 类的 id 会更新

Oralce 里面, 那个 类的 id 还是0

导致你再插入1行数据的时候。

SQL Server 啥问题没有

而 Oracle 就会抱 主键冲突 (其实这里都还没有插入数据库, 是 Entity Framework 检测到 主键冲突了, 于是不让你插入了)

我当时只好找个表来存储序列号,处理起来,也是很麻烦。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11814924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存