在JPQL查询中加入条件

时间:2017-05-03 12:24:15

标签: sql hibernate jpa jpql

我正在尝试使用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_idusuario_id和{{ 1}}(真/假)。

有什么想法吗?谢谢!

*编辑: 这是UsuarioCentroEntity(关系实体):

paciente

0 个答案:

没有答案