簡體   English   中英

本機查詢返回帶有java.lang.Object的列表,而不是JPA應用程序中的自定義對象類型

[英]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選擇所有StudentsStudent表。 換句話說,我要收集所有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM