【问题标题】:CFQUERYPARAM throws 'incompatible type' error with HQLCFQUERYPARAM 使用 HQL 引发“不兼容的类型”错误
【发布时间】:2021-06-24 22:43:32
【问题描述】:

我的简单查询:

<CFQUERY name="thisRecipePreps" dbtype="hql">
    FROM recipeItems r
    WHERE r.recipe = <cfqueryparam value="#thisrecipeid#">
    AND r.otherRecipe_id <> <cfqueryparam value="0">
</CFQUERY>

我的对象 recipeItems 与“recipe”具有“多对一”关系,这将返回一个数组(我相信)。我想按 recipe_id 过滤结果,当我没有 CFQUERYPARAM 标记时这有效,但像这样它会引发错误:

Error casting an object of type java.lang.Integer to an incompatible type. This usually indicates a programming error in Java, although it could also mean you have tried to use a foreign object in a different way than it was designed.

我认为该错误意味着“thisrecipeid”变量的类型为“整数”,但“r.recipe”不是。

我想(并且需要)使用 CFQUERYPARAM,但我似乎不能。

感谢您的任何见解

注意:我从网站和成员那里得到建议,这与另一个应该解决的问题 (https://stackoverflow.com/a/4185205/4575762) 是同一个问题。但是,通过删除两个实体之间的关系解决了这个问题,这完全违背了使用 ORM/Hibernate 的初衷。通过破坏其他东西来解决问题并不能解决问题。此外,该问题的错误显示“NULL指针”问题,此错误是不兼容的类型问题。

【问题讨论】:

  • cfqueryparam 标签中包含CFSQLType 属性会发生什么?
  • cfsqltype 与 HQL 不兼容。 HQL 已经知道类型。如果包含类型,无论如何它实际上都会引发错误。
  • 不幸的是他们不是。它们仍然容易受到 XSS 攻击,我们必须使用 CFQUERYPARAM
  • 这个老问题的答案是否有帮助:stackoverflow.com/a/4185205/4575762 ?
  • @SevRoberts 是的,我找到了那个问题和答案,虽然这肯定会解决错误消息,但它会破坏关系,这是开始使用 ORM 的主要原因之一。跨度>

标签: hibernate orm coldfusion hql cfqueryparam


【解决方案1】:

【讨论】:

  • 这篇文章与我没有的查询中的TABS有关(虽然文章很有趣,但我在查询中不使用制表符),谢谢
猜你喜欢
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2013-09-23
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多