在JPQL中,如何访问命名参数的属性?

时间:2011-07-06 19:02:44

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

我正在使用Hibernate 3.5.4-Final。

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

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

问题接近查询的结尾,在

(:workPackage).relatedWorkflows

导致Hibernate抛出部署时QuerySyntaxException。删除括号没有帮助;为了清楚起见,我让他们离开了有没有办法解决这个问题,或者我是否必须以编程方式执行此操作?

1 个答案:

答案 0 :(得分:4)

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

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

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