首页 > 解决方案 > Spring jpa + postgresql:包含运算符'@>'的本机查询不起作用

问题描述

这是我的问题,我尝试通过至少获得所有选项参数的外键过滤表。

所以我的请求在我的数据库管理系统中运行良好,是:

SELECT a.*
FROM agents a 
LEFT JOIN competence c ON c.agent_id = a.id 
LEFT JOIN competence_type ct ON ct.id = c.competence_type_id 
GROUP BY a.id 
HAVING array_agg(CAST(ct.code AS TEXT)) @> array['OPTION_1','OPTION_2'] 

然后使用 Spring 创建我的本机查询:

Query query = em.createNativeQuery(queryString, Agent.class)

并通过以下方式获得结果:

query.getResultList(),

我收到此错误:(我格式化错误以提高可读性)

Syntax error in SQL statement "SELECT A.* 
FROM AGENTS A 
LEFT JOIN COMPETENCE C ON C.AGENT_ID = A.ID 
LEFT JOIN COMPETENCE_TYPE CT ON CT.ID = C.COMPETENCE_TYPE_ID 
GROUP BY A.ID 
HAVING ARRAY_AGG(CT.CODE:[*]TEXT) @> ARRAY[(?, ?, ?)]  LIMIT ?"; 
expected "(, ., [, ::, AT, FORMAT, *, /, %, +, -, ||, ~, !~, NOT, LIKE, ILIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ORDER, )"

所以我的问题是如何提出这个请求或使用其他运算符使其以相同的方式工作。

谢谢你们

标签: javapostgresqlspring-data-jpaoperatorscontains

解决方案


推荐阅读