2017-05-27 8 views
1

私はCursoというクラスとDisciplinaというクラスを持っています。FKをフィルタとして使用してJavaでクエリを作成する

DisciplinaFKCursoid_cursoとなります。私はCursoのIDを使用してDisciplinaのフィルタリングしたい。

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

例外は、クエリが実体を期待しているときLongとしてCursoを設定しようとしている言うように。

クエリ文字列をu.curso.[cursoId] =に変更してください。

関連する問題