[英]Spring Data JPA – Custom Native Query-Methods list prints java.lang.Object
[英]Native Query returns list with java.lang.Object instead of custom object type in JPA application
我的MySQL數據庫中有以下表格:
Student
id | firstName | lastName | ...
Course
id | name | cp | ...
-
CourseResult (course_id and student_id are created by JPA)
id | course_id | student_id | grade | ...
-
我正在嘗試與所有在給定course_id
定義的Course
Students
course_id
。 為此,我在控制器中創建了一個方法:
public String showCourseResultList(Course course) {
this.course = course;
studentsInCourse = new ArrayList<Student>();
studentsInCourse = em
.createNativeQuery(
"SELECT * FROM Student WHERE id IN (SELECT student_id FROM CourseResult WHERE course_id = ?)")
.setParameter(1, course.getId()).getResultList();
System.out.println(studentsInCourse);
return "courseResultList?faces-redirect=true";
}
所以在NativeQuery中,我正在檢測給定course_id
所有student_ids
。 然后我用student_ids
選擇所有Students
從Student
表。 換句話說,我要收集所有Students
在一個ArrayList<Student>
,誰在給定的Course
。
問題是,這樣做之后, ArrayList<T>
包含來自java.lang.Object
類型的元素,而不是我的自定義類型Student
。 System.out.println(studentsInCourse);
返回[[Ljava.lang.Object;@3adaf419, [Ljava.lang.Object;@7ccfb37e]
。
我怎么能收集所有的Students
從類型Student
在我ArrayList<T>
代替ArrayList<java.lang.Object>
?
嘗試給您期望的類名作為createNativeQuery調用的第二個參數:
studentsInCourse = em
.createNativeQuery(
"SELECT * FROM Student WHERE id IN (SELECT student_id FROM CourseResult WHERE course_id = ?)", Student.class)
.setParameter(1, course.getId()).getResultList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.