休眠和 ORA-01400:无法插入空



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

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

休眠映射的一部分如下所示:

...
<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")

这是否意味着甲骨文未能为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

不会在表插入中自动生成序列号。您必须将其编码到插入中,将其编码到触发器中,或者让休眠执行此操作。

我认为休眠需要<generator class="sequence">,如果你想要它这样做,或者你的休眠设置已经停止认为你正在处理一个 Oracle 数据库

相关内容

  • 没有找到相关文章

最新更新