1

我在 ColdFusion 中的 ORM 应用程序遇到了另一个问题。当我尝试插入新的子对象时,出现以下错误。更新工作正常。

此异常的根本原因是:coldfusion.orm.hibernate.HibernateSessionException: [Macromedia][Oracle JDBC Driver][Oracle]ORA-01400: cannot insert NULL into ("AKC"."T_BREED_PAGE_TEXT_CONTENT_WEB"."KEY_TEXT_CONTENT")。

这是 orm cfc:

<cfcomponent persistent="true"
      table="T_BREED_PAGE_TEXT_CONTENT_WEB" 
      schema="akc"  >

    <cfproperty name="KEY_TEXT_CONTENT" fieldtype="id"   generator="sequence" params="{sequence='akc.seq_breed_page_display'}" />
    <cfproperty name="TEXT_TITLE_TEXT" />
    <cfproperty name="TEXT_ICON_IMAGE" />
    <cfproperty name="TEXT_CONTENT" />
    <cfproperty name="KEY_BREED_PAGE" />
    <cfproperty name="CDE_BLOCK_ID"  />
    <cfproperty name="breedPage" cfc="breedPage" fieldtype="many-to-one" fkcolumn="KEY_BREED_PAGE" />
    <cfproperty name="pageBlocks" cfc="pageBlocks" fieldtype="many-to-one" fkcolumn="CDE_BLOCK_ID" />
</cfcomponent>

我已经尝试使用冷融合增量生成器以及手动设置值并生成相同的错误。使用该序列的普通 cfquery 插入工作正常。关于解决此问题的任何想法?

谢谢

4

2 回答 2

0

奇怪的是,在发布之前的答案后,我遇到了一个非常相似的问题。在深入了解 hibernate 日志记录并分析我的 save 方法实际上在做什么之后,我发现在使用地址对象数组保存用户对象时,在删除地址后,hibernate 试图通过设置来删除地址地址记录中的 FK 用户 ID 字段为 NULL,但我的架构不允许为空。将 inverse="true" 放在 Addresses 属性上解决了它。也许你的问题有点相似。

当您说要插入一个新孩子时,究竟是在哪里抛出异常?我很想知道你在调用什么 ORM 函数。

不知道该叫什么对象,但为了论证,我们称它为 SubBreed() 你在做 SubBreed.setBreedPage(new BreedPage); 然后 entitySave(SubBreed)?还是完全不同的东西?

于 2012-05-18T20:02:46.133 回答
0

您是否尝试过 generator="identity" 并让数据库自动增加 P​​K?

于 2012-05-02T18:19:19.587 回答