ColdFusion ORM错误插入子表

时间:2012-05-02 14:17:46

标签: orm coldfusion

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

  

此异常的根本原因是:   coldfusion.orm.hibernate.HibernateSessionException:   [Macromedia] [Oracle JDBC Driver] [Oracle] ORA-01400:无法插入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>

我已尝试使用coldfusion增量生成器以及手动设置值并生成相同的错误。使用序列的普通cfquery插件工作正常。有什么想法解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:0)

您是否尝试过generator =“identity”并让db自动增加PK?

答案 1 :(得分:0)

奇怪的是,在发布我之前的回答后,我遇到了一个非常类似的问题。在深入了解hibernate日志记录并分析我的save方法实际执行的内容后,我发现在保存带有地址对象数组的用户对象后,删除地址后,hibernate试图通过设置地址记录中的FK userID字段为NULL,但我的模式不允许空值。在地址属性上放置inverse =“true”解决了它。也许你的问题有点类似。

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

不知道该怎么称呼该对象,但为了论证,我们称之为SubBreed() 你在做SubBreed.setBreedPage(新的BreedPage);那么entitySave(SubBreed)?或完全不同的东西?