【问题标题】:In JPQL, how do you access properties of named parameters?在 JPQL 中,如何访问命名参数的属性?
【发布时间】:2011-09-29 21:40:40
【问题描述】:

我正在使用 Hibernate 3.5.4-Final。

我想将实体作为命名查询的参数传递,然后访问该查询的命名参数in 的持久属性。我想这样做:

@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:workPackage).relatedWorkflows")

问题就在查询的末尾,在

(:workPackage).relatedWorkflows

这会导致 Hibernate 抛出部署时的 QuerySyntaxException。删除括号没有帮助;为了清楚起见,我把它们留在了里面。有什么办法可以解决这个问题,还是我必须以编程方式执行此操作?

【问题讨论】:

  • FWIW 在 DataNucleus 中运行良好。参数可以是任何类型,因此可以像候选实体的字段一样引用字段

标签: hibernate jakarta-ee jpa jpa-2.0 jpql


【解决方案1】:

你不能。您必须将属性值本身传递给查询:

@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:relatedWorkflows)")

query.setParameterList("relatedWorkflows", workPackage.getRelatedWorkflows());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2011-03-31
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多