java - 如何在java,jpa中返回多个
问题描述
我有两个对象,学生和书。Student 与 Book 有 @OneToMany 关系,而 Book 只有 id、name 和 publishYear。我想要从查询返回的是这个-> 从学生的内部加入书 b 在 s.id = b.studentId 中选择 s.name、b.name、b.publishYear。如何返回 s.name、b.name 和 b.publishYear?
解决方案
entityManager.createQuery("select s.name, b.name, b.publishYear from Student s join s.books b");
这将返回一个List<Object[]>
如果要返回 DTO 列表,可以使用构造函数表达式:
entityManager.createQuery("select new model.BookDTO(s.name, b.name, b.publishYear) from Student s join s.books b");
这将返回一个List<BookDTO>
BookDTO 必须如下所示:
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 文档中阅读有关投影的更多信息:
推荐阅读
- python - 如何获得两个日期之间的所有周数?
- excel - How to fix error 1004 on a wb.SaveAs function
- java - 将泛型类作为输入传递给 Akka Streams Flow
- jquery - 从数据表中检索最后一个值
- chess - UCI引擎基础问题:ucinewgame和多客户端
- excel - 如何在 Power BI 中使用条件计算另一个表中出现的次数?
- angular - Angular-resize-event 不适用于 textarea
- c# - 使用递归和泛型创建快速排序
- c++ - 线程安全堆栈实现
- c++ - 在 QGraphicsView 上实现交互式样条曲线的最佳方法是什么?