我的postgres表中有一個jsonb列。我正在使用的選擇查詢是在postgresql中使用jsonb列選擇查詢不在jpa中工作
SELECT distinct metadata->'Country' as metadata FROM documents WHERE metadata?'Country' order by metadata->'Country' asc
它從postgresql正常工作。在元數據colummn數據就像是選擇查詢的
'{"Country":"US","Vendor":"ABC","Year":"2011"}'
輸出爲「美國」
當我使用JPA這個查詢,存在的問題與「?」在選擇查詢中使用,因爲它需要一個參數。
Query query = this.em.createNativeQuery(
"SELECT distinct cast(metadata->"+title+") as metadata FROM documents WHERE metadata?"+title+" order by metadata->"+title+" "+sort);
List<Object> obj=query.getResultList();
我該如何解決這個問題?
不能使用準備好的語句佔位符配置查詢的結構功能解決了這個問題。只傳遞值。所以你可以使用'where foo.bar =:someValue',而不是'where foo.:someProp = 2'。 –
@JBNizet我刪除了所有參數並內聯給出。但'?'仍然是一個問題。預期的位置參數計數:1,實際參數:[] –
我假設jpa不包含'?'運算符 - 你可以用函數來解決它我猜 –