2017-05-27 54 views
1

我有一個名爲Curso的類和一個名爲Disciplina的類。使用FK作爲過濾器在Java上創建查詢

Disciplina有一個FKCursoid_curso。我想過濾Disciplina的使用Curso的ID作爲配件。

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; 
} 

但我每次運行這個時候,我得到這個錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.Long for parameter id_curso with expected type of class br.udesc.model.entidade.Curso from query string select u from Disciplina u where u.curso =:id_curso.

回答

0

由於異常說你想設置CursoLong當查詢期待的實體。

將您的查詢字符串更改爲:u.curso.[cursoId] =並且它應該可以工作