我有一个名为Curso的类和一个名为Disciplina的类。
Disciplina有一个名为Curso的FK fromid_curso。我想用Disciplina的ID作为fitler来过滤Curso

public List<Disciplina> listarDisciplinaPorCurso(Long curso) {
    String jpql = "select u from Disciplina u where u.curso =:id_curso";
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("ProjetoIntegradorPU");
    EntityManager em = emf.createEntityManager();
    List<Disciplina> resultado = em.createQuery(jpql, Disciplina.class).setParameter("id_curso", curso).getResultList();
    if (resultado == null || resultado.isEmpty()) {
        return null;
    }
    return resultado;
}

但每次我运行时都会出现以下错误:
线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中的异常:您试图设置一个类型为java.lang.Long的值,用于参数id_curso,所需类型为br.udesc.model.entidade.curso,来自查询字符串select u from Disciplina u,其中u.curso=:id_curso。

最佳答案

正如异常所说,当查询需要实体时,您正试图将Curso设置为Long
将查询字符串更改为:u.curso.[cursoId] =,它应该可以工作

10-07 15:39