Mysql SQL 1查询上的3个关系

Mysql SQL 1查询上的3个关系,mysql,sql,spring,hibernate,tomcat,Mysql,Sql,Spring,Hibernate,Tomcat,我试图从不同的实体中获取3个表,它一直说我有一个错误,当我使用where eia.carreraHorizontal.kid=eig.carreraHorizontal.kid和eig.carreraHorizontal.kid=hch.carreraHorizontal.kid时,它返回了大量重复的结果。 这是我的密码: List<EvaluacionIndividualAnualYGdp> lista; String jpql = "select

我试图从不同的实体中获取3个表,它一直说我有一个错误,当我使用where eia.carreraHorizontal.kid=eig.carreraHorizontal.kid和eig.carreraHorizontal.kid=hch.carreraHorizontal.kid时,它返回了大量重复的结果。 这是我的密码:

        List<EvaluacionIndividualAnualYGdp> lista;
        String jpql = "select DISTINCT new es.valencia.gp.sbch.entity.EvaluacionIndividualAnualYGdp(eia, eig, hch)" 
                + " from EvaluacionIndividualAnual eia, EvaluacionIndividualGdp eig, HistoricoCarreraHorizontal hch"
                + " where eia.carreraHorizontal.kid = eig.carreraHorizontal.kid = eig.carreraHorizontal.kid"
                + " ";
                //GROUP BY eia ORDER BY eia.carreraHorizontal.empleado.apellido1 ASC, eia
        TypedQuery<EvaluacionIndividualAnualYGdp> query = em.createQuery(jpql, EvaluacionIndividualAnualYGdp.class);
        lista = query.getResultList();
        return lista;
    } ``` 

The error:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: = near line 1, column 302 [select DISTINCT new es.valencia.gp.sbch.entity.EvaluacionIndividualAnualYGdp(eia, eig, hch) from es.valencia.gp.sbch.entity.EvaluacionIndividualAnual eia, es.valencia.gp.sbch.entity.EvaluacionIndividualGdp eig, es.valencia.gp.sbch.entity.HistoricoCarreraHorizontal hch where eia.carreraHorizontal.kid = eig.carreraHorizontal.kid = eig.carreraHorizontal.kid ]

But i'm getting an exception. How i can get those values? Sorry for the question but i'm new.
列表列表a;
String jpql=“选择不同的新es.valencia.gp.sbch.entity.EvaluacionIndividualAnualYGdp(eia、eig、hch)”
+“来自EvaluacionindividuanalEIA、EvaluacionIndividualGdp eig、历史累积水平六氯环己烷”
+“其中eia.carreraHorizontal.kid=eig.carreraHorizontal.kid=eig.carreraHorizontal.kid”
+ " ";
//按eia.carreraHorizontal.empleado.apellido1 ASC的eia命令分组,eia
TypedQuery query=em.createQuery(jpql,EvaluacionIndividualAnualYGdp.class);
lista=query.getResultList();
返回列表a;
} ``` 
错误:
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的ast节点:=第1行第302列附近[选择不同的新es.valencia.gp.sbch.entity.EvaluacionindividualanalyGDP(eia、eig、hch)来自es.valencia.gp.sbch.entity.EvaluacionindividualanualEIA,es.valencia.gp.sbch.entity.EvaluacionIndividualGdp eig,es.valencia.gp.sbch.entity.HistoricCarreRahorizontal hch,其中eia.carreraHorizontal.kid=eig.carreraHorizontal.kid=eig.carreraHorizontal.kid]
但我有个例外。如何获得这些值?对不起,我是新来的。

您应该删除最后一个eig.carreraHorizontal.kid:

eia.carreraHorizontal.kid = eig.carreraHorizontal.kid = eig.carreraHorizontal.kid
应该是

eia.carreraHorizontal.kid = eig.carreraHorizontal.kid
比较a=b=b不起作用。可能应该是a=b和b=c

    eia.carreraHorizontal.kid = eig.carreraHorizontal.kid 
and eig.carreraHorizontal.kid = hch.carreraHorizontal.kid
我不知道在distinct之后的“new”是否也是一个错误。

您(至少)有一个错误的语法

   where eia.carreraHorizontal.kid = eig.carreraHorizontal.kid = eig.carreraHorizontal.kid 
相反,你应该使用

    where eia.carreraHorizontal.kid = eig.carreraHorizontal.kid 
    AND  eig.carreraHorizontal.kid =  hch.carreraHorizontal.kid
您可以避免使用基于where的旧连接语法,并使用基于显式连接的语法

   select DISTINCT
   es.valencia.gp.sbch.entity.EvaluacionIndividualAnualYGdp(eia, eig, hch) 
   from EvaluacionIndividualAnual eia
   INNER JOIN EvaluacionIndividualGdp eig ON eia.carreraHorizontal.kid = eig.carreraHorizontal.kid  
   INNER JOIN HistoricoCarreraHorizontal hch  ON  eig.carreraHorizontal.kid =  hch.carreraHorizontal.kid
不清楚您在
new es.valencia.gp.sbch.entity.evaluationInDividuaLanUALYGDP(eia、eig、hch)中所说的“new”是什么意思
SQL中没有新的运算符