我正在尝试使用JPA存储库创建此查询:
SELECT * FROM api_centros c
LEFT JOIN api_centros_usuarios cu ON (c.id = cu.centro_id AND cu.usuario_id = ?)
WHERE cu.usuario_id IS NULL OR cu.paciente = 1
我试过了:
@Query("SELECT c FROM CentroEntity c LEFT JOIN c.relacionUsuarios AS r ON r.centro = c AND r.usuario = :usuario WHERE r.usuario IS NULL OR r.paciente = TRUE")
但是这会引发以下错误:
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.InvalidWithClauseException: with clause can only reference columns in the driving table [SELECT c FROM es.plexus.api.vo.CentroEntity c LEFT JOIN c.relacionUsuarios AS r ON r.centro = c AND r.usuario = :usuario WHERE r.usuario IS NULL OR r.paciente = TRUE]
试图以另一种方式重新格式化查询,但我无法弄清楚如何。简而言之,我有3个实体。其中2个与第三个相关联(连接表与来自其他实体的每个id和true / false值)。我需要与某个用户(另一个表)相关的所有实体(查询中的表api_centros
)将第三个值设为true或者根本不相关(或者,从另一个方面来看,我需要从第一个实体(相关的和相关的)以及与该值相关的所有内容(相关且不相关)。
实体是:
Centro
(仅需要ID),Usuario
(仅需要ID)和CentroUsuario
包含3个字段:centro_id
,usuario_id
和{{ 1}}(真/假)。
有什么想法吗?谢谢!
*编辑: 这是UsuarioCentroEntity(关系实体):
paciente