我正在使用Hibernate 3.5.4-Final。
我想将实体作为命名查询的参数传递,然后在该查询中访问该命名参数的持久属性。我想做这个:
@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:workPackage).relatedWorkflows")
问题就在查询即将结束时,在
(:workPackage).relatedWorkflows
这会导致Hibernate抛出部署时QuerySyntaxException。删除括号没有帮助;为了清楚起见,我把它们留在里面。有什么办法解决这个问题,还是我必须以编程方式执行此操作?
最佳答案
你不能您必须将属性值本身传递给查询:
@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:relatedWorkflows)")
query.setParameterList("relatedWorkflows", workPackage.getRelatedWorkflows());
关于hibernate - 在JPQL中,如何访问命名参数的属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6601575/