4

私は休止状態が初めてで、休止状態でクエリを実行しようとしていますが、例外が発生しています

unexpected token: ON near line 1, column 135 [SELECT A.comp_id.appRefNo ....

ここにコードがあります

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;

私は何を間違っていますか?

ありがとう

4

3 に答える 3

8

Many constructs from SQL cannot moved one-to-one to the HQL. In HQL keyword WITH is used instead of ON, when joining with specific condition. This construct is specific to Hibernate and is not expected to work with other JPA providers.

Chapter about HQL and especially 16.3 Associations and Joins in Hibernate Core Reference Manual are worth of reading.

于 2013-03-07T20:22:26.290 に答える
3

あなたの中で見逃されたマッピングの関連付けがあるようですhbm.xml.

これを参照してください。

hbm.xml ファイルに関連付けが定義されていません

于 2013-03-07T16:51:54.080 に答える