嵌套构造函数查询
问题描述:
当我尝试与我的custum DTO嵌套构造函数的查询。嵌套构造函数查询
select new DTO.foo (new DTO.boo(...) , new DTO.boo(...)) from Foo
我得到这个错误:
org.hibernate.hql.internal.ast.QuerySyntaxException:
unexpected token: new near line 1, column 23 [ select new DTO.foo (new DTO.boo(...) , .....
SOLUTION
既然我们不能有一个构造函数内的构造,因为它是在JPQL
非法我们按照在这里同样的方法解决此问题: https://*.com/a/12742926/1383538
答
这是非法的JPQL
,根据JPQL BNF
表示法
constructor_expression ::= NEW constructor_name (constructor_item {, constructor_item}*)
constructor_item ::= single_valued_path_expression | scalar_expression | aggregate_expression |
identification_variable
你不能有一个构造函数内的构造(即constructor_item
不能是constructor_expression
)。请参阅JPA
规范
+0
谢谢你,所以我必须找到另一种方式吗? – Youssef
您可以添加由日志 –
提出的查询,它是一个'QuerySyntaxException',因此没有生成冬眠查询 – Youssef