Ошибка неверной грамматики в Hibernate по именованному запросу - PullRequest
0 голосов
/ 14 февраля 2019

Когда я пытаюсь выполнить этот запрос с помощью hibernate в Java, что-то идет не так и выдает ошибку типа

( 12002 ) Internal Service Error. Exception Message : Bad Sql Grammar Exception occurred [Hibernate operation: could not execute query; bad SQL grammar [SELECT COMDT_COM_STAT, COMDT_COM_REFNO, COMDT_COM_CCY  
            FROM COMDT 
            WHERE COMDT_COM_REFNO = ? 
            AND COMDT_COM_RDN BETWEEN ? AND ? 
            AND COMDT_COM_STAT = ?
            GROUP BY COMDT_COM_STAT, COMDT_COM_REFNO, COMDT_COM_CCY 
            ORDER BY COMDT_COM_REFNO]; nested exception is java.sql.SQLException: Invalid Column Name]

Но когда я выполняю тот же запрос с правильными входными данными в PLSQL, все работает, как я ожидал.Я работаю над этой ошибкой в ​​течение 2 дней, но ничего не появилось.

Спасибо.

QUERY

<sql-query name="getCommissionBetweenDatesWithStat">
        <return alias="xyz"
            class="com.ykb.hmn.cms.commission.datamodel.IComDetail"/>
        <![CDATA[ 
        SELECT COMDT_COM_CCY AS {xyz.currency}, SUM(xyz.COMDT_COM_AMT1) AS {xyz.amount1} 
        FROM COMDT 
        WHERE COMDT_COM_REFNO = :refNo 
        AND COMDT_COM_RDN BETWEEN :startRdn AND :endRdn 
        AND COMDT_COM_STAT = :stat
        GROUP BY COMDT_COM_STAT, COMDT_COM_REFNO, COMDT_COM_CCY 
        ORDER BY COMDT_COM_REFNO
        ]]>
</sql-query>

Сущность

<class name="com.ykb.hmn.cms.commission.datamodel.IComDetail"
        table="COMDT">
        <tuplizer class="com.ykb.hmn.inf.core.datamodel.IntfEntityTuplizer"
            entity-mode="pojo" />
        <id name="oid" type="java.lang.Long">
            <column length="17" name="COMDT_ID" />
        </id>
        <property name="refNo" type="long">
            <column length="12" name="COMDT_COM_REFNO" />
        </property>
        <property name="stat" type="string">
            <column length="1" name="COMDT_COM_STAT" />
        </property>
        <property name="relDay" type="int">
            <column length="5" name="COMDT_COM_RDN" />
        </property>
        <property name="amount1" type="big_decimal">
            <column precision="18" scale="2" name="COMDT_COM_AMT1" />
        </property>
        <property name="currency" type="string">
            <column length="4" name="COMDT_COM_CCY" />
        </property>

<class/>

Схема таблицы

COMDT_ID NUMBER(17)
COMDT_COM_REFNO NUMBER(12)
COMDT_COM_AMT1 NUMBER(18,2)
COMDT_COM_STAT VARCHAR2(1)
COMDT_COM_RDN NUMBER(5)
COMDT_COM_CCY VARCHAR2(4)

Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Полагаю, запрос с именем hibernate должен быть объявлен с использованием имени свойства, а не имени столбца.Поэтому вместо использования имени столбца в именованном запросе используйте имя свойства.

См. Этот пример для получения дополнительной информации: https://www.journaldev.com/3451/hibernate-named-query-example-namedquery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...