【发布时间】:2014-02-17 13:33:29
【问题描述】:
此示例代码演示了该问题:
var Names = ['Jon','Anna'];
var Params.Pos1 = [ Names[1] ];
var Params.Pos2 = [ Names[1] , Names[2] ];
var Params.Pos3 = [ Names ];
var Params.Named1 = { name:Names[1] };
var Params.Named2 = { name1:Names[1] , name2:Names[2] };
var Params.Named3 = { names:Names };
var BaseHql = "SELECT COUNT(*) FROM Person WHERE ";
var Queries.Pos1 = BaseHql & "FirstName IN (?)";
var Queries.Pos2 = BaseHql & "FirstName IN (?,?)";
var Queries.Pos3 = BaseHql & "FirstName IN (?)";
var Queries.Named1 = BaseHql & "FirstName IN (:name)";
var Queries.Named2 = BaseHql & "FirstName IN (:name1,:name2)";
var Queries.Named3 = BaseHql & "FirstName IN (:names)";
var Results = {};
for ( var Item in Queries )
{
try
{
Results[Item] = OrmExecuteQuery( Queries[Item] , Params[Item] );
}
catch (any cfcatch)
{
Results[Item] = "[#cfcatch.message#|#cfcatch.detail#]";
}
}
六个场景中的五个有效。
Queries.Pos3 不起作用,尽管它与 Queries.Named3 完全相同。
它返回此错误消息和详细信息:
复杂对象类型不能转换为简单值。
表达式请求了一个变量或一个中间表达式结果作为一个简单的值。但是,结果不能转换为简单值。简单值是字符串、数字、布尔值和日期/时间值。查询、数组和 COM 对象是复值的示例。
错误的最可能原因是您尝试将复杂值用作简单值。例如,您尝试在 cfif 标记中使用查询变量。
堆栈跟踪是:
coldfusion.runtime.CfJspPage$ComplexObjectException: Complex object types cannot be converted to simple values.
at coldfusion.runtime.Cast._String(Cast.java:1036)
at coldfusion.runtime.Cast._cast(Cast.java:192)
at coldfusion.orm.ORMUtils.getTypedValue(ORMUtils.java:359)
at coldfusion.orm.hibernate.HibernatePersistenceManager.setQueryParams(HibernatePersistenceManager.java:844)
at coldfusion.orm.hibernate.HibernatePersistenceManager._executeHQL(HibernatePersistenceManager.java:781)
at coldfusion.orm.hibernate.HibernatePersistenceManager.executeHQL(HibernatePersistenceManager.java:753)
at coldfusion.orm.hibernate.HibernatePersistenceManager.executeQuery(HibernatePersistenceManager.java:615)
at coldfusion.orm.ORMUtils._executeQuery(ORMUtils.java:344)
at coldfusion.orm.ORMUtils._executeQuery(ORMUtils.java:311)
at coldfusion.orm.ORMUtils.executeQuery(ORMUtils.java:303)
at coldfusion.runtime.CFPage.ORMExecuteQuery(CFPage.java:8933)
上面的代码是否有问题,或者这是 CF 或 Hibernate 的错误/限制?
【问题讨论】:
标签: hibernate coldfusion hql