当我使用我的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( ... ) , .....
解
因为我们在构造函数中没有构造函数,因为它在JPQL
中是非法的我们通过在此处遵循相同的方法来解决此问题:https://stackoverflow.com/a/12742926/1383538
答案 0 :(得分:4)
根据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
规范