Coldfusion ORM/Hibernate StaleStateException

4
每次在Coldfusion 9.01 ORM上执行非常简单的保存操作时,我都会遇到以下错误:
Hibernate操作异常。更新/删除的行不存在或会话包含陈旧数据。根本原因:org.hibernate.StaleStateException: 批量更新从更新中返回意外的行数[0]; 实际行数:0; 预期:1
以下代码实际上会更新数据库中的对象,但是这个错误会出现在页面底部,可能是当Coldfusion在请求结束时自动调用ormFlush()时发生的。
<cfscript>
myDeal = entityloadbypk('serviceCategory',1);
myDeal.setScName('Automotive1');
EntitySave(myDeal);
writedump(myDeal);
</cfscript>

这是我正在处理的对象,但当对多个对象进行此操作时,会出现相同问题。

<cfscript>
/** 
* @persistent 
* @table y_serviceCategories
*/ 
component{ 
    property name="scID" fieldtype="id" datatype="int" generator="native"; 
    property string scName; 
    property priority; 

    property name="serviceSubCategory" fieldtype="one-to-many" cfc="serviceSubCategory" fkcolumn="scID";

    public array function getSubCategoryByPriority(){
        return EntityLoad("serviceSubCategory", {scID=getscID()}, "Priority ASC");
    }
}
</cfscript>

我目前的想法是,Hibernate批处理中存在一些过期的对象(与代码中的对象无关),每次Hibernate运行添加/更新批处理时都会失败。请帮忙!


是的,我已经打开了这个选项。但我不确定输出结果在哪里可以找到。它应该在标准的Coldfusion日志之一吗? - DannyLeavitt
是的,输出您的应用程序日志。 - Henry
1
Henry不正确。这里有一篇来自ColdFusion工程师的博客文章,解释了如何启用SQL日志记录以及如何指定日志数据的位置:http://www.rupeshk.org/blog/index.php/2009/07/coldfusion-orm-how-to-log-sql/ - Adam Tuttle
1
Henry,除非你进行了其他配置,否则SQL日志的默认存储位置是在{instance-name}-out.log中,与所有其他实例控制台日志混合在一起。 - Adam Tuttle
1
@DannyLeavitt 你是否将任何ORM实体存储在持久性作用域(会话,应用程序,服务器)中? - Adam Tuttle
显示剩余7条评论
1个回答

0

出于好奇,尝试添加

ORMFLush();

之后

EntitySave(myDeal);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接