Я пытаюсь создать именованный запрос, который выдает ошибку.
" SELECT p FROM Project p " +
" JOIN FETCH p.employees e " +
" WHERE p.id=:id AND ( TREAT(e AS FullTimeEmployee).code = :code OR e.state=:state)"
Класс проекта
public class Project {
@Id
@GeneratedValue
private long id;
private String code;
@OneToMany(cascade = CascadeType.ALL)
private List<Employee> employees;
Теперь класс Employee расширен за счет нескольких классов. Цель именованного запроса - получить один проект с отфильтрованными сотрудниками, которые имеют определенное состояние, или FullTimeEmployee с определенным кодом.
Ошибка:
<May 2, 2019 12:22:21,205 PM CEST> <Error> <org.hibernate.hql.internal.ast.ErrorCounter> <BEA-000000> <<AST>:1:127: unexpected AST node: (
<AST>:1:127: unexpected AST node: (
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4936)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExprLhs(HqlSqlBaseWalker.java:5370)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4831)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1263)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4552)
Truncated. see log file for complete stacktrace