gpt4 book ai didi

oracle - hibernate 和 ORA-01400 : cannot insert NULL

转载 作者:行者123 更新时间:2023-12-02 05:15:37 25 4
gpt4 key购买 nike

我有一个相当简单的场景,一个表,一个用于自动生成主键的序列:

CREATE TABLE foo (event_id NUMBER(19,0)....
CREATE SEQUENCE event_seq

部分 hibernate 映射如下所示:

...
<id name="id" column="EVENT_ID" type="long">
<generator class="native">
<param name="sequence">event_seq</param>
</generator>
</id>
...

长时间使用没有问题。但最近我得到了这个:

ORA-01400: cannot insert NULL into ("TESTING"."FOO"."EVENT_ID")

这是否意味着 Oracle 无法生成 EVENT_ID 的序列号?这可能是什么原因?显然这个错误来自 64 位 Oracle,这可能与问题有关吗?删除并重新创建表和序列没有帮助,它只是不想在该特定机器上工作。无论我做什么,我都无法重现此错误,该错误来自几乎无法访问的用户之一。

有什么想法吗?

<强>----------------问题解决了---------------

在 32 位操作系统上使用驱动程序 10.2.0.1.0 时,在 Oracle 10.2.0.1.0 64 位中检测到原始问题。一旦驱动程序更新到11.2.0.2.0,问题就消失了。这完全取决于虚拟机是作为 32 位还是 64 位系统运行。

最佳答案

Oracle 不会在表插入时自动生成序列号。您要么必须将其编码到插入中,要么将其编码到触发器中,要么让 hibernate 执行此操作。

我认为hibernate需要<generator class="sequence">如果您希望它执行此操作,或者您的 hibernate 设置已不再认为您正在处理 Oracle 数据库

关于oracle - hibernate 和 ORA-01400 : cannot insert NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973572/

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