【问题标题】:How to return multiple in java, jpa如何在java,jpa中返回多个
【发布时间】:2020-03-18 09:40:33
【问题描述】:

我有两个对象,Student 和 Book。 Student 与 Book 有@OneToMany 关系,而 Book 只有 id、name 和 publishYear。我想要从查询返回的是这个-> 从学生的内部加入书 b 在 s.id = b.studentId 中选择 s.name、b.name、b.publishYear。如何返回 s.name、b.name 和 b.publishYear?

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:
    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 文档中阅读有关投影的更多信息:

    https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#hql-select-clause

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2018-10-20
      • 2020-09-25
      • 2018-07-18
      相关资源
      最近更新 更多