Mysql SQL 1查询上的3个关系
我试图从不同的实体中获取3个表,它一直说我有一个错误,当我使用where eia.carreraHorizontal.kid=eig.carreraHorizontal.kid和eig.carreraHorizontal.kid=hch.carreraHorizontal.kid时,它返回了大量重复的结果。 这是我的密码: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
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中没有新的运算符