Как переписать SQl запрос в запрос HQl?
Я переписал SQl в HQl, но есть ошибки, как правильно переделать эти SQl запросы в HQL?
select cbd.id,
(case
when secondsel.lawyer_status = 4 then 30
when secondsel.lawyer_status = 2 then 20
when secondsel.lawyer_status = 3 then 10
else secondsel.lawyer_status end) as reason_id,
lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number,
(case
when lic.changing_doc_date is null then lic.action_date
else lic.changing_doc_date end) as cert_date,
secondsel.id as lawyer_id,secondsel.person_fio as fio
from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel
join common_base_doc cbd on cbd.lawyer_id = firstsel.id
join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id
where
secondsel.id = firstsel.id
AND secondsel.version= firstsel.version
and secondsel.lawyer_status not in (1,5)
@Query("select cbd, case when secondsel.lawyer_status = 4 then 30 when secondsel.lawyer_status then 20 when secondsel.lawyer_status = 3 then 10" +
"else secondsel.lawyer_status end, lic, case when lic.changing_doc_date is null then lic.action_date else lic.changing_doc_date end" +
"from lawyers secondsel where secondsel.version = (select max(b.version) from LAWYERS b where secondsel.id = b.id) firstsel" +
"join common_base_doc cbd on cbd.lawyer_id = firstsel.id join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id where " +
"secondsel.id = firstsel.id and secondsel.version= firstsel.version and secondsel.lawyer_status not in (1,5)")
select a.id, b.lawyer_id, a.new_fio, c.person_full_name as old_fio, c.doc_date_number as order_name
from o_order_change_fio a, lawyer_doc b, common_base_doc c
where a.id = c.id and c.lawyer_id = b.lawyer_id
and not exists(select * from lawyers where b.lawyer_id = lawyers.id and lawyer_status = 5)
@Query("select a, b, c from o_order_change_fio a, lawyer_doc b, common_base_doc c where a.id = c.id and c.lawyer_id = b.lawyer_id and " +
"not exists(select 1 from lawyers s where b.lawyers_id = s.id and s.lawyer_status = 5)" )
Вот мой код вывода запросов:
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import org.hibernate.annotations.Formula;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@Entity
@Table(name = "CANCELLED_CERTIFICATES")
public class CancelledCertificates {
public CancelledCertificates() {
}
@Id
@Column(name = "ID", insertable = false, updatable = false)
private Long id;
@Column(name = "CHANGING_DOC_DATE", insertable = false, updatable = false)
private Date changing_doc_date;
@Column(name = "IDENTITY_CARD_NUMBER", insertable = false, updatable = false)
private String identity_card_number;
@Formula("(select PERSON_FIO from LAWYERS where STATUS_ON_PANEL = 'Прекращен')")
private String person_fio;
@Column(name = "ID" , insertable = false, updatable = false)
private Long reason_id;
@Column(name = "IS_NOT_RETURNED", insertable = false, updatable = false)
private Integer is_not_returned;
@Column(name = "LAWYER_STATUS", insertable = false, updatable = false)
private Integer lawyer_status;
@Column(name = "REG_CAPTION", insertable = false, updatable = false)
private String reg_caption;
@Column(name = "REG_CODE", insertable = false, updatable = false)
private String reg_code;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getChanging_doc_date() {
return changing_doc_date;
}
public void setChanging_doc_date(Date changing_doc_date) {
this.changing_doc_date = changing_doc_date;
}
public String getIdentity_card_number() {
return identity_card_number;
}
public void setIdentity_card_number(String identity_card_number) {
this.identity_card_number = identity_card_number;
}
public String getPerson_fio() {
return person_fio;
}
public void setPerson_fio(String person_fio) {
this.person_fio = person_fio;
}
public Integer getIs_not_returned() {
return is_not_returned;
}
public void setIs_not_returned(Integer is_not_returned) {
this.is_not_returned = is_not_returned;
}
public Integer getLawyer_status() {
return lawyer_status;
}
public void setLawyer_status(Integer lawyer_status) {
this.lawyer_status = lawyer_status;
}
public String getReg_caption() {
return reg_caption;
}
public void setReg_caption(String reg_caption) {
this.reg_caption = reg_caption;
}
public String getReg_code() {
return reg_code;
}
public void setReg_code(String reg_code) {
this.reg_code = reg_code;
}
}
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import org.hibernate.annotations.Formula;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@Entity
@Table(name = "O_ORDER_CHANGE_FIO")
public class OOrderChangeFIO {
public OOrderChangeFIO() {
}
@Id
@Column(name = "ID", insertable = false, updatable = false)
private Long id;
@Formula("select fd.lawyer_id from lawyer_doc, common_base_doc where fd.lawyer_id = common_base_doc.lawyer_id")
private Long lawyer_id;
@Column(name = "NEW_FIO", insertable = false, updatable = false)
private String new_fio;
@Formula("select fd.person_full_name from common_base_doc where fd.id = id")
private String person_full_name;
@Formula("select fd.doc_date_number from common_base_doc where fd.id = id")
private String doc_date_number;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getLawyer_id() {
return lawyer_id;
}
public void setLawyer_id(Long lawyer_id) {
this.lawyer_id = lawyer_id;
}
public String getNew_fio() {
return new_fio;
}
public void setNew_fio(String new_fio) {
this.new_fio = new_fio;
}
public String getPerson_full_name() {
return person_full_name;
}
public void setPerson_full_name(String person_full_name) {
this.person_full_name = person_full_name;
}
public String getDoc_date_number() {
return doc_date_number;
}
public void setDoc_date_number(String doc_date_number) {
this.doc_date_number = doc_date_number;
}
}
import model.CancelledCertificates;
import model.OOrderChangeFIO;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.util.List;
public class Main {
private static final SessionFactory ourSessionFactory;
static {
try {
Configuration configuration = new Configuration();
configuration.configure();
ourSessionFactory = configuration.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return ourSessionFactory.openSession();
}
public static void main(final String[] args) {
final Session session = getSession();
try {
List <OOrderChangeFIO>query1 = Querys.query1(session);
List <CancelledCertificates>query2 = Querys.query2(session);
for (OOrderChangeFIO oOrderChangeFIO : query1) {
System.out.println(oOrderChangeFIO.toString());
}
for (CancelledCertificates cancelledCertificates: query2
) {
System.out.println(cancelledCertificates.toString());
}
} finally {
session.close();
}
}
}
import org.hibernate.Session;
import org.hibernate.query.Query;
import java.util.ArrayList;
import java.util.List;
public class Querys {
public static List query1(Session session) {
try {
Query query = session.createQuery("select a.id, b.lawyer_id, a.new_fio, c.person_full_name as old_fio, c.doc_date_number as order_name " +
"from o_order_change_fio a, lawyer_doc b, common_base_doc c " +
"where a.id = c.id and c.lawyer_id = b.lawyer_id and " +
"not exists(select 1 from lawyers where b.lawyer_id = lawyers.id and lawyer_status =: status5)");
query.setParameter("status5", "5");
return query.list();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return new ArrayList<>();
}
public static List query2(Session session) {
try {
Query query = session.createQuery("select cbd.id," +
"(case " +
"when secondsel.lawyer_status =: status4 then ifstatus4 " +
"when secondsel.lawyer_status =: status2 then ifstatus2 " +
"when secondsel.lawyer_status =: status3 then ifstatus3 " +
"else secondsel.lawyer_status end) as reason_id, " +
"lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number, " +
"(case " +
"when lic.changing_doc_date is null then lic.action_date " +
"else lic.changing_doc_date end) as cert_date, " +
"secondsel.id as lawyer_id,secondsel.person_fio as fio " +
"from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel " +
"join common_base_doc cbd on cbd.lawyer_id = firstsel.id " +
"join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id " +
"where " +
"secondsel.id = firstsel.id " +
"AND secondsel.version= firstsel.version " +
"and secondsel.lawyer_status not in (status1, status5) ");
query.setParameter("status1", "1");
query.setParameter("status5", "5");
query.setParameter("status2", "2");
query.setParameter("ifstatus2", "20");
query.setParameter("status3", "3");
query.setParameter("ifstatus3", "10");
query.setParameter("status4", "4");
query.setParameter("ifstatus4", "30");
return query.list();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
return new ArrayList<>();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">jdbc:firebirdsql://localhost:3350/lawyers-client.fdb?lc_ctype=WIN1251</property>
<property name="hibernate.connection.username">sysdba</property>
<property name="hibernate.connection.password">masterkey</property>
<property name="hibernate.connection.pool_size">1</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
</session-factory>
</hibernate-configuration>
А вот ошибки:
10:44:11.610 [main] DEBUG org.hibernate.hql.internal.antlr.HqlSqlBaseWalker - select << begin [level=1, statement=select]
10:44:11.627 [main] DEBUG org.hibernate.engine.transaction.internal.TransactionImpl - On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
org.hibernate.hql.internal.ast.QuerySyntaxException: o_order_change_fio is not mapped [select a.id, b.lawyer_id, a.new_fio, c.person_full_name as old_fio, c.doc_date_number as order_name from o_order_change_fio a, lawyer_doc b, common_base_doc c where a.id = c.id and c.lawyer_id = b.lawyer_id and not exists(select 1 from lawyers where b.lawyer_id = lawyers.id and lawyer_status =: status5)]
10:44:11.641 [main] DEBUG org.hibernate.hql.internal.ast.QueryTranslatorImpl - parse() - HQL: select cbd.id,(case when secondsel.lawyer_status =: status4 then ifstatus4 when secondsel.lawyer_status =: status2 then ifstatus2 when secondsel.lawyer_status =: status3 then ifstatus3 else secondsel.lawyer_status end) as reason_id, lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number, (case when lic.changing_doc_date is null then lic.action_date else lic.changing_doc_date end) as cert_date, secondsel.id as lawyer_id,secondsel.person_fio as fio from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel join common_base_doc cbd on cbd.lawyer_id = firstsel.id join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id where secondsel.id = firstsel.id AND secondsel.version= firstsel.version and secondsel.lawyer_status not in (status1, status5)
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: o_order_change_fio is not mapped [select a.id, b.lawyer_id, a.new_fio, c.person_full_name as old_fio, c.doc_date_number as order_name from o_order_change_fio a, lawyer_doc b, common_base_doc c where a.id = c.id and c.lawyer_id = b.lawyer_id and not exists(select 1 from lawyers where b.lawyer_id = lawyers.id and lawyer_status =: status5)]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at Querys.query1(Querys.java:10)
at Main.main(Main.java:31)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: o_order_change_fio is not mapped [select a.id, b.lawyer_id, a.new_fio, c.person_full_name as old_fio, c.doc_date_number as order_name from o_order_change_fio a, lawyer_doc b, common_base_doc c where a.id = c.id and c.lawyer_id = b.lawyer_id and not exists(select 1 from lawyers where b.lawyer_id = lawyers.id and lawyer_status =: status5)]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716)
... 3 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: o_order_change_fio is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:169)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:79)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3704)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3593)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:724)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:580)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:317)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:265)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:272)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192)
... 9 more
10:44:11.670 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:538: unexpected token: (
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 538 [select cbd.id,(case when secondsel.lawyer_status =: status4 then ifstatus4 when secondsel.lawyer_status =: status2 then ifstatus2 when secondsel.lawyer_status =: status3 then ifstatus3 else secondsel.lawyer_status end) as reason_id, lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number, (case when lic.changing_doc_date is null then lic.action_date else lic.changing_doc_date end) as cert_date, secondsel.id as lawyer_id,secondsel.person_fio as fio from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel join common_base_doc cbd on cbd.lawyer_id = firstsel.id join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id where secondsel.id = firstsel.id AND secondsel.version= firstsel.version and secondsel.lawyer_status not in (status1, status5) ]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at Querys.query2(Querys.java:26)
at Main.main(Main.java:32)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 538 [select cbd.id,(case when secondsel.lawyer_status =: status4 then ifstatus4 when secondsel.lawyer_status =: status2 then ifstatus2 when secondsel.lawyer_status =: status3 then ifstatus3 else secondsel.lawyer_status end) as reason_id, lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number, (case when lic.changing_doc_date is null then lic.action_date else lic.changing_doc_date end) as cert_date, secondsel.id as lawyer_id,secondsel.person_fio as fio from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel join common_base_doc cbd on cbd.lawyer_id = firstsel.id join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id where secondsel.id = firstsel.id AND secondsel.version= firstsel.version and secondsel.lawyer_status not in (status1, status5) ]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74)
at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:297)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716)
... 3 more
10:44:11.673 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:538: unexpected token: (
antlr.NoViableAltException: unexpected token: (
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1519)
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1363)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1063)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:748)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:319)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:198)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:290)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at Querys.query2(Querys.java:26)
at Main.main(Main.java:32)
10:44:11.685 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:550: unexpected token: max
10:44:11.685 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:550: unexpected token: max
antlr.NoViableAltException: unexpected token: max
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1519)
at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1363)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1063)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:748)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:319)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:198)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:290)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at Querys.query2(Querys.java:26)
at Main.main(Main.java:32)
10:44:11.686 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:561: expecting EOF, found ')'
10:44:11.686 [main] ERROR org.hibernate.hql.internal.ast.ErrorTracker - line 1:561: expecting EOF, found ')'
antlr.MismatchedTokenException: expecting EOF, found ')'
at antlr.Parser.match(Parser.java:211)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:215)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:290)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113)
at Querys.query2(Querys.java:26)
at Main.main(Main.java:32)
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 538 [select cbd.id,(case when secondsel.lawyer_status =: status4 then ifstatus4 when secondsel.lawyer_status =: status2 then ifstatus2 when secondsel.lawyer_status =: status3 then ifstatus3 else secondsel.lawyer_status end) as reason_id, lic.is_not_returned as not_returnet,secondsel.reg_caption,secondsel.reg_code,lic.identity_card_number as cert_number, (case when lic.changing_doc_date is null then lic.action_date else lic.changing_doc_date end) as cert_date, secondsel.id as lawyer_id,secondsel.person_fio as fio from lawyers secondsel, (select id, max(version) as version from lawyers group by id) firstsel join common_base_doc cbd on cbd.lawyer_id = firstsel.id join LAWYER_IDENTITY_CARD lic on lic.id = cbd.id where secondsel.id = firstsel.id AND secondsel.version= firstsel.version and secondsel.lawyer_status not in (status1, status5) ]