java - jparepository - spring jpa教學




使用Hibernate查詢:冒號被視為參數/轉義冒號 (4)

你逃避::: 。 我認為。

或嘗試nativequery

return sessionFactory.getCurrentSession().
            createQuery("FROM Weather WHERE city_id = :id AND date " +
                    "BETWEEN now()::date AND now()::date + (:days - 1)").
                    setInteger("id", city_id).setString("days", days).list();

得到錯誤:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: :

如何在HQL中使用此語法?

基本上問題是我想在我的查詢中使用冒號(:),但是當hibernate看到冒號時,它認為它是一個參數(:parameterName是HQL中參數的語法),正如你從我的2次使用中看到的那樣( :id and :days )。

但是當我使用now():: date語句時,它是特定的postgreSQL語法,hibernate破壞了一切。


命名參數採用冒號':'像this你正在尋找什麼?


我剛遇到這個問題,不得不使用強制轉換,所以我嘗試了一些東西讓它工作。 原來你逃脫:在冬眠中用\

但是,在java中,要打印\開始,你必須用\來轉義它。
所以,如果你想在你的SQL hibernate查詢中放一個:你必須把它寫成: \\:

如果你想在PostgreSQL中進行轉換,例如在我的情況下,你必須,例如: field\\:\\:int如果你想將一些字段轉換為整數。








hql