如何在java、jpa中返回多个
我有两件东西,学生和书。学生与图书有@OneToMany关系,图书只有id、名称和出版年份。我想从查询中返回的是this->从学生的内部加入书中选择s.name、b.name、b.publishYear,b on s.id=b.studentId。如何返回s.name、b.name和b.publishYear如何在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"
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文档中有关投影的更多信息: