我在这里收到错误:
@Query("SELECT p.id,"
+ " p.data,"
+ " p.protocolo,"
+ " p.status,"
+ " d.nome,"
+ " u.nome"
+ " FROM Protocolo p"
+ " INNER JOIN Documento d ON "
+ " p.documento_id = d.id "
+ " INNER JOIN Usuario u ON "
+ " p.academico_id = u.id)")
public List<Protocolo> findByProtocolosJoin();
以下是日志文件的链接: Log file
答案 0 :(得分:0)
JPQL
允许您通过关系 JOIN
。您似乎试图JOIN
到另一个根。这不是标准JPQL
的一部分,虽然有些JPA提供商(例如DataNucleus
)可能允许它 - 但是消息表明你的(Hibernate
)并不适用于你的版本#{1}} 39;重新使用。任何JPQL
教程都会向您显示how to join across relations,因为您不会打扰发布实体(此类加入将基于此),这就是所有可以说的。
答案 1 :(得分:0)
使用JOIN运算符的内部联接的语法是[INNER] JOIN [AS]。
考虑以下查询: SELECT p 来自员工e JOIN e.phones p
此查询使用JOIN运算符通过电话关系将Employee实体加入Phone实体。 此查询中的连接条件由电话关系的对象关系映射定义。
JPQL请求的SQL等价物是:
SELECT p.id,p.phone_num,p.type,p.emp_id 从emp e,电话p WHERE e.id = p.emp_id
尝试此请求:
SELECT p.id,p.data,p.protocolo,p.status,d.nome,u.nome FROM Protocolo p JOIN p.Documento d JOIN p.Documento.Usuario u
通过结果和好运告诉我们