使用FK作为过滤器在Java上创建查询
问题描述:
我有一个名为Curso
的类和一个名为Disciplina
的类。使用FK作为过滤器在Java上创建查询
Disciplina
有一个FK从Curso
叫id_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.
答
由于异常说你想设置Curso
为Long
当查询期待的实体。
将您的查询字符串更改为:u.curso.[cursoId] =
并且它应该可以工作