0

DB から 2 つのタイムスタンプを減算する単純なクエリを作成しようとしています。

select ticket_status, 
       count(ticket_status), 
       trunc (to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/12/12 4:29 PM', 'YYYY/MM/DD HH:MI PM')) as days 
from ITS_TICKET_MASTER 
group by ticket_status, 
trunc (to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/12/12 4:29 PM', 'YYYY/MM/DD HH:MI PM'))

このクエリは、私が望む結果を与えてくれます

しかし、HQL で同じクエリを実行しようとすると、エラーが発生します。

QueryImpl(select ticketStatus, count(ticketStatus), trunc (to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/12/14 4:29 PM'、'YYYY/MM/DD HH:MI PM'))、ticketStatus、trunc (to_date('2004/12/14 4:29 PM'、'YYYY/MM/DD HH:MI PM) による WebTicket グループからの日数')-to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM'))) 休止状態: col_0_0_ として webticket0_.TICKET_STATUS を選択し、col_1_0_ として count(webticket0_.TICKET_STATUS) を選択し、trunc (to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH: MI PM')) as col_2_0_ from ITS_TICKET_MASTER webticket0_ group by webticket0_.TICKET_STATUS , trunc(to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/ 12/14 午後 4 時 29 分','YYYY/MM/DD HH:MI PM')) org.hibernate.exception.GenericJDBCException: org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92) で org.hibernate.exception.ErrorCodeConverter でクエリを実行できませんでした.convert(ErrorCodeConverter.java:80) の org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) の org.hibernate.loader.Loader.doList(Loader.java:1565) の org.hibernate.loader. Loader.list(Loader.java:1545) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271) org com.service.FetchFormService の org.hibernate.impl.QueryImpl.list(QueryImpl.java:74) の .hibernate.impl.SessionImpl.list(SessionImpl.java:840)。fetchFormDetailsforAgeingReportDayWise(FetchFormService.java:170) com.functionalService.FetchFormFunctionalService.fetchFormDetailsforAgeingReportDayWise(FetchFormFunctionalService.java:275) com.actionClass.AgeingReportAction.fetchAgeingReport(AgeingReportAction.java:49) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で java.lang.reflect.Method.invoke (不明なソース) で org.apache.struts.actions.DispatchAction.dispatchMethod (DispatchAction.java:276) org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:196) で org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) で org.apache. struts.action.org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) の RequestProcessor.process(RequestProcessor.java:226) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) の
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) で javax.servlet.http.HttpServlet.service(HttpServlet.java:717) で

これに対する答えはありません。私が間違っていることを提案してください。

4

1 に答える 1

0

(3.2.6.ga で Oracle ドライバー 11.2 を使用していました)

問題は、クエリの last_change_date_time が 0であるように思われます。これを sysdate に置き換えたところ、うまくいきました。

おそらく、私が行ったように数値を日付にマップしようとしているのでしょう。あなたの *(trunc (to_date('2004/12/14 4:29 PM', 'YYYY/MM/DD HH:MI PM')-to_date('2004/12/12 4:29 PM', 'YYYY/ MM/DD HH:MI PM')) as days)* 日を日付にマップしないでください

これを行っていたときに同じ問題が発生しました:

<hibernate-mapping>
    <class name="myorg.tables.PtProfileData" table="PROFILE_DATA" >
        <composite-id name="id" class="org.openrap.tables.PtProfileDataId">
            <key-many-to-one name="ptVariableDefinition" class="org.openrap.tables.PtVariableDefinition">
                <column name="VARIABLE_ID" length="4" />
            </key-many-to-one>
            <key-property name="dateTime" type="java.util.Date">
                <column name="DATE_TIME" length="7" />
            </key-property>
        </composite-id>
        <property name="valueNumber" type="java.math.BigDecimal">
            <column name="VALUE_NUMBER" precision="22" scale="0">
                <comment>May be add VALUE_TEXT and VALUE_DATE later</comment>
            </column>
        </property>

    <sql-query name="PtProfileData.getprofile">
        <return alias="PROFILE_DATA" class="myorg.tables.PtProfileData"/>
<![CDATA[select variable_id,
trunc(date_time,':timeparam') as date_time,
sum(VALUE_NUMBER) as VALUE_NUMBER ,
**0 as last_change_date_time**
from PROFILE_DATA 
where VARIABLE_ID = :varid and DATE_TIME between :fromtime and :totime 
group by variable_id,trunc(date_time,':timeparam')
order by date_time]]>
    </sql-query>
</hibernate-mapping>
于 2013-06-26T07:45:11.820 に答える