0

<query..>Car.hbm.xml に入れた場合、返されるセッション(Session) HibernateUtil.getSessionFactory().getCurrentSession();は null です。xml マッピング ファイルからクエリを削除すると、セッションは null ではなくなります。なぜこのエラーが発生するのですか? 私は本当にその種の問題で立ち往生しています。

このxmlマッピングを取得しました:

<hibernate-mapping package="at.opendata.entitys">      
    <class name="Car" table="Cars">     
        <id name="id" column="car_Id">
            <generator class="increment"/>
        </id>
        <set name="carDetails" table="Cardetail" cascade="all" lazy="false" fetch="select" >
            <key column="car_id" not-null="true"/>
            <one-to-many class="CarDetail" />
        </set>  
        <property name="name" not-null="true"/>
        <property name="vin" not-null="true"/>              
    </class>    

    <query name="dailysales">
        <![CDATA[select sum(date_part('minute', age(cd.gone, cd.back))) from Car as c left join c.carDetails as cd where cd.gone is not null and cd.back is not null]]>
    </query>
</hibernate-mapping>

そして、これは私が名前付きクエリを呼び出したい場所です:

Transaction transaction = null;
int amount = 0;

try{
    Session session = (Session) HibernateUtil.getSessionFactory().getCurrentSession();  
    transaction = session.beginTransaction();

    amount = (Integer)session.getNamedQuery("dailysales").uniqueResult();
4

1 に答える 1

0

クエリは有効な HQL クエリではありません。選択したデータベースの SQL 方言に固有の関数 (date_part、age) が含まれているようです。1 つのオプションは、代わりに名前付き SQL クエリを使用することです。他のオプションは、それらの機能を含むように方言を拡張することです。

于 2013-02-18T18:50:46.083 に答える