2015-10-20 75 views
0

我有JPA的問題。我開始用類似的東西(我已經減少了查詢會導致一個錯誤的片段):JPA和Postgres generate_series

entityManager.createNativeQuery("select * from generate_series(:from::date, :to, '1 day') as dt").setParameter("from", from).setParameter("to", to).getResultList(); 

,並有「並非所有的命名參數已設置」的錯誤。我發現,我應該將其更改爲類似的東西:

entityManager.createNativeQuery("select * from generate_series (date :from, :to, '1 day') as dt")... 

entityManager.createNativeQuery("select * from generate_series (cast (:from as date), :to, '1 day') as dt")... 

我也試過位置參數:

entityManager.createNativeQuery("select * from generate_series (cast (?1 as date), ?2, '1 day') as dt")... 

不幸的是,它並沒有幫助。我會問你如何解決這個問題的一些建議。我使用Hibernate。

+0

JPA本機查詢僅支持位置參數。任何NAMED參數不保證被JPA實現支持。 –

+0

謝謝你的迴應,我忘了提及,但我嘗試使用位置參數,這也沒有奏效。 – NoName

+0

因此,使用位置參數更新您的問題,並定義在這種情況下什麼是「沒有工作」,並且可能會提及哪個JPA實現,因爲這種行爲顯然取決於實現。 –

回答

0

我很抱歉沒有迴應。我改變位置參數和日期到時間戳,我的ide(IntelliJ IDEA)仍然顯示錯誤「無法解析查詢參數」,但是當我在服務器上部署它的工作時。

entityManager.createNativeQuery("select * from generate_series(cast (?1 as TIMESTAMP), cast(?2 as TIMESTAMP), '1 day'").setParameter(1, from).setParameter(2, to).getResultList();