Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java、jpa中返回多个_Java_Hibernate_Jpa - Fatal编程技术网

如何在java、jpa中返回多个

如何在java、jpa中返回多个,java,hibernate,jpa,Java,Hibernate,Jpa,我有两件东西,学生和书。学生与图书有@OneToMany关系,图书只有id、名称和出版年份。我想从查询中返回的是this->从学生的内部加入书中选择s.name、b.name、b.publishYear,b on s.id=b.studentId。如何返回s.name、b.name和b.publishYear entityManager.createQuery("select s.name, b.name, b.publishYear from Student s join s.books b"

我有两件东西,学生和书。学生与图书有@OneToMany关系,图书只有id、名称和出版年份。我想从查询中返回的是this->从学生的内部加入书中选择s.name、b.name、b.publishYear,b on s.id=b.studentId。如何返回s.name、b.name和b.publishYear

entityManager.createQuery("select s.name, b.name, b.publishYear from Student s join s.books b");
这将返回一个
列表

如果要返回DTO列表,可以使用构造函数表达式:

entityManager.createQuery("select new model.BookDTO(s.name, b.name, b.publishYear) from Student s join s.books b");
这将返回一个
列表

书的外观必须如下所示:

package model;

public class BookDTO() {

    private final String studentName;
    private final String bookName;
    private final String publishYear;

    public BookDTO(String studentName, String bookName, String publishYear) {
        this.studentName = studentName;
        this.bookName = bookName;
        this.publishYear = publishYear;
    }

    // getters
}
阅读Hibernate文档中有关投影的更多信息: