Преобразование MySQL запроса в HQL - PullRequest
0 голосов
/ 08 мая 2020

У меня есть этот запрос (он работает с 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 of: br.com. acelerometro.entity.Atividade [выберите a, l, n, p, r, c, pa с br.com.acelerometro.entity.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 И l.descricao =: lateralidadedes c И m.id_movimento = a.id_movimento И m.descricao =: movimentodes c И m.parteCorpo_id. .id_parteCorpo И p.descricao =: partecorpodes c И r.id_atividade = a.id_atividade И a.id_planoAtividade = c .id_consulta И pa.id_paciente = c .id_paciente AND pa.nome =: `` pac `

1 Ответ

0 голосов
/ 12 мая 2020

Если вы используете HQL, вы должны использовать связанное свойство для этого id_lateralidade, определенное в классе Entity.

Используйте idLateralidade в соответствии с определением в entity Ex:

public class Atividade  {

    // Field..............

     @Column(name="id_lateralidade")
     public Integer idLateralidade  

}
...