2012-03-30 6 views
0

Ich habe ein Problem. Ich arbeite mit jpa (eclipselink von glassfish 3.1) und einer mysql db.JPA Native SQL Suchergebnis Casting

Angenommen, ich habe eine Schüler-Tabelle mit einem "creation" -Feld, das ein datetime ist. Mit SQL, wenn ich alle Datensätze auf ‚2012-03-30‘ erstellt auswählen möchten, unabhängig von der Zeit:

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

Ok, seine Arbeiten.

Jetzt möchte ich das gleiche in jpql tun. Und ich denke nicht, dass es möglich ist. Also habe ich versucht, mit einer nativen Abfrage:

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

I mit und ohne die Gussteile in Linien versucht, 2 und 4, aber immer das gleiche Ergebnis:

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

Mein Student-Klasse hat die @Entity Annotation und Alles funktioniert gut mit

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

Was ist los?

+0

Ok, es ist gelöst. Warten Sie 8 Stunden, um meine onw Frage zu beantworten ... entityManager.createNativeQuery ("wählen Sie * vom Studenten aus, wo Datum (Schaffung) = '2012-03-30', Student.class); – tweetysat

Antwort

3

Ok, es ist gelöst.

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