0

我正在尝试编写一个简单的查询,我只是从 DB 中减去两个时间戳。

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')) 作为 WebTicket 组中的天数 by 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'))) 休眠:选择 webticket0_.TICKET_STATUS 作为 col_0_0_,count(webticket0_.TICKET_STATUS) 作为 col_1_0_,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 的 org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92) 处执行查询.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) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271) at org .hibernate.impl.SessionImpl.list(SessionImpl.java:840) 在 org.hibernate.impl.QueryImpl.list(QueryImpl.java:74) 在 com.service.FetchFormService。fetchFormDetailsforAgeingReportDayWise(FetchFormService.java:170) at com.functionalService.FetchFormFunctionalService.fetchFormDetailsforAgeingReportDayWise(FetchFormFunctionalService.java:275) at com.actionClass.AgeingReportAction.fetchAgeingReport(AgeingReportAction.java:49) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at 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。RequestProcessor.process(RequestProcessor.java:226) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) 在 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

(我使用的是 Oracle 驱动程序 11.2 和 3.2.6.ga)

问题似乎是我的查询中的0 as last_change_date_time我用 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)* 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 回答