我在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插件工作正常。有什么想法解决这个问题吗?
由于
答案 0 :(得分:0)
您是否尝试过generator =“identity”并让db自动增加PK?
答案 1 :(得分:0)
奇怪的是,在发布我之前的回答后,我遇到了一个非常类似的问题。在深入了解hibernate日志记录并分析我的save方法实际执行的内容后,我发现在保存带有地址对象数组的用户对象后,删除地址后,hibernate试图通过设置地址记录中的FK userID字段为NULL,但我的模式不允许空值。在地址属性上放置inverse =“true”解决了它。也许你的问题有点类似。
当你说你正在插入一个新的孩子时,究竟是什么抛出异常?我很想知道你正在调用的ORM功能。
不知道该怎么称呼该对象,但为了论证,我们称之为SubBreed() 你在做SubBreed.setBreedPage(新的BreedPage);那么entitySave(SubBreed)?或完全不同的东西?