【发布时间】:2020-08-23 10:47:49
【问题描述】:
我有这个查询(它适用于 MySQL):
Select *
from atividade a,
lateralidade l,
movimento m,
parteCorpo p,
registroatividade r,
consulta c,
paciente pa
where
l.id_lateralidade = a.id_lateralidade
AND l.descricao = '?'
AND m.id_movimento = a.id_movimento
AND m.descricao = '?'
AND m.parteCorpo_id_parteCorpo = p.id_parteCorpo
AND p.descricao = '?'
AND r.id_atividade = a.id_atividade
AND a.id_planoAtividade = c.id_consulta
AND pa.id_paciente = c.id_paciente
AND pa.nome = '?';
我想将其转换为 HQL。到目前为止,我有这个:
public List<RegistroAtividade> list_regs(Atividade atividade, Paciente paciente){
Query query = this.session.createQuery("from Atividade a, Lateralidade l, Movimento m, ParteCorpo p, RegistroAtividade r,Consulta c, Paciente pa where l.id_lateralidade = a.id_lateralidade AND l.descricao = :lateralidadedesc AND m.id_movimento = a.id_movimento AND m.descricao = :movimentodesc AND m.parteCorpo_id_parteCorpo = p.id_parteCorpo AND p.descricao = :partecorpodesc AND r.id_atividade = a.id_atividade AND a.id_planoAtividade = c.id_consulta AND pa.id_paciente = c.id_paciente AND pa.nome = :pacientenome");
query.setParameter("lateralidadedesc", atividade.getLateralidade().getDescricao());
query.setParameter("movimentodesc", atividade.getMovimento().getDescricao());
query.setParameter("partecorpodesc", atividade.getMovimento().getParteCorpo().getDescricao());
query.setParameter("partecorpodesc", paciente.getNome());
return query.list();
}
但我不断收到此错误:
org.hibernate.QueryException:无法解析属性:id_lateralidade 的:br.com.acelerometro.entity.Atividade [从 br.com.acelerometro.entity 中选择 a、l、n、p、r、c、pa。 Atividade AS a, br.com.acelerometro.entity.Lateralidade AS l, br.com.acelerometro.entity.Movimento AS m, br.com.acelerometro.entity.ParteCorpo AS p, br.com.acelerometro.entity.RegistroAtividade AS r,br.com.acelerometro.entity.Consulta AS c, br.com.acelerometro.entity.Paciente AS pa 其中 l.id_lateralidade = a.id_lateralidade AND l.descricao = :lateralidadedesc AND m.id_movimento = a.id_movimento AND m .descricao = :movimentodesc AND m.parteCorpo_id_parteCorpo = p.id_parteCorpo AND p.descricao = :partecorpodesc AND r.id_atividade = a.id_atividade AND a.id_planoAtividade = c.id_consulta AND pa.id_paciente = c.id_paciente AND pa.nome = :基因组]```
【问题讨论】:
-
必须使用正确的 HQL 语法重写连接。
-
你能帮我重写这些连接吗?
-
您是否有充分的理由将干净、易读且高效的查询转换为抽象形式比真实数据库更好的数据库?
-
如果您有其他解决方案而不是将此查询转换为 hql,我会很高兴看到它 =)
-
@GordanBobic Hibernate 不是“中间件”,这不是 OP 使用它的原因。