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

Nic*_*ick 8 hibernate jpa jpql jpa-2.0 jakarta-ee

我正在使用 Hibernate 3.5.4-Final。

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

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

问题接近查询的结尾,在

(:workPackage).relatedWorkflows
Run Code Online (Sandbox Code Playgroud)

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

JB *_*zet 8

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

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

query.setParameterList("relatedWorkflows", workPackage.getRelatedWorkflows());
Run Code Online (Sandbox Code Playgroud)