我的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不包含'?'运算符 - 你可以用函数来解决它我猜 –