JPA Native sql结果列表转换

时间:2012-03-30 12:20:04

标签: mysql jpa-2.0 jpql

我遇到了一些问题。 我正在使用jpa(来自glassfish 3.1的eclipselink)和一个mysql db。

假设我有一个带有“创建”字段的学生表,该字段是日期时间。 如果我想选择在'2012-03-30'上创建的所有记录,请使用sql,无论时间:

select * from student where date(created) = '2012-03-30'

好的,它的工作。

现在我想在jpql中做同样的事情。我不认为这是可行的。 所以我尝试了一个原生查询:

entityManager.createNativeQuery("select * from student where date(creation) = '2012-03-30';
List<Student> students = (List<Student>)query.getResultList();
System.out.println("Result : "+students.size());
for (Student student : (List<Student>)students)
{
    System.out.println(student);
}

我在第2行和第4行尝试使用和不使用铸件,但总是使用相同的结果:

Result : 3
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.tuto.entities.Train

我的学生课程有@entity注释,一切正常,使用

entityManager.createQuery("select s from Student s where s.age = '25');

怎么了?

1 个答案:

答案 0 :(得分:3)

好的,它已经解决了。

entityManager.createNativeQuery("select * from student where date(creation) = '2012-03-30',Student.class);