获得意外令牌的错误:在第1行第135列附近开启

Bas*_*sit 4 hibernate hql

我是hibernate的新手,并试图在hibernate中运行查询,但我得到了异常

unexpected token: ON near line 1, column 135 [SELECT A.comp_id.appRefNo ....
Run Code Online (Sandbox Code Playgroud)

这是代码

StringBuffer query = new StringBuffer("SELECT A.comp_id.appRefNo, 
    A.comp_id.custId from ");

query.append(LosaCustContactZ.class.getName());

query.append(" A INNER JOIN " + LosaCust.class.getName() + " B 
    ON ( B.comp_id.appRefNo = A.comp_id.appRefNo AND " + 
    "B.comp_id.custId = A.comp_id.custId) INNER JOIN " + LosaApp.class.getName() + " C 
    ON " + "(B.comp_id.appRefNo = A.comp_id.appRefNo) ");

query.append("WHERE C.comp_id.appRefNo != ?" + " AND C.appDt >= ? AND 
    A.contactT = 'PHONE'" ); 

if (StringUtils.isNotEmpty(phoneNums)) {
    query.append(" AND A.contact IN(" + phoneNums + ")");
}

List<LosaCustContactZ> resultList = null;
try {
    resultList = getHibernateTemplate().find(query.toString(), 
           new Object[] { appRefNo, appDate });
} catch (Exception e) {
    String message = e.getMessage();
System.out.println();
}
return resultList;
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

谢谢

Mik*_*unu 8

SQL中的许多构造都不能一对一地移动到HQL.在使用HQL时WITH,使用关键字代替ON,在使用特定条件时.此构造特定于Hibernate,并且不期望与其他JPA提供程序一起使用.

关于HQL的章节,特别是Hibernate Core Reference Manual中的16.3关联和连接值得一读.