【问题标题】:ColdFusion ORM error inserting into child table插入子表的 ColdFusion ORM 错误
【发布时间】:2012-05-02 14:17:45
【问题描述】:

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

此异常的根本原因是: Coldfusion.orm.hibernate.HibernateSessionException: [Macromedia][Oracle JDBC 驱动程序][Oracle]ORA-01400: 无法插入 NULL 进入 ("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 插入工作正常。有什么想法可以解决这个问题吗?

谢谢

【问题讨论】:

    标签: orm coldfusion


    【解决方案1】:

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

    【讨论】:

    • 否,但 oracle 中没有身份类型。我所需要的只是一个数字,我尝试使用 cf increment 和一个硬编码值,它们也因相同的错误而失败。谢谢
    【解决方案2】:

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

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

    不确定如何调用该对象,但为了论证,我们称它为 SubBreed() 你在做 SubBreed.setBreedPage(new BreedPage);然后 entitySave(SubBreed)?还是完全不同的东西?

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多