【问题标题】:Assign to entity field count from another table JPA从另一个表 JPA 分配给实体字段计数
【发布时间】:2021-04-02 22:39:35
【问题描述】:

我正在使用 Spring Boot、HSQLDB 和 Data JPA。我有两个实体: Book(int id, String name, long votesCount) 和 Vote(int id, int book_id) 我需要将 books 表中的所有条目放入 List 并用 votes 表中的行数填充 votesCount 字段具有相同的所需 book_id。

所以,对于给定的表 图书: 身份证名称 1 本书1 2 本书2

投票: id book_id 1 1 2 1 3 2

结果列表应包含 2 个 Book 实例: 名称:book1,票数:2 姓名:book2,票数:1

最好的方法是什么?

@Entity
@Table(name = "books")
class Book{

  @Id
  int id;
  String name;

  @OneToMany(fetch = FetchType.LAZY, mappedBy = "book")
  List<Vote> votes;

  @Transient
  long voteCount;
}

//////////////////////////////

@Entity
@Table(name = "votes")
class Vote{
  @Id
  int id;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "book_id", foreignKey = @ForeignKey(name = "fk_book_id"))
  Book book;
}

【问题讨论】:

    标签: java sql hibernate spring-data-jpa


    【解决方案1】:

    您可以将计算字段 votesCount 与 @Formula 一起使用;

    @Entity
    @Table(name = "books")
    class Book{
    
      @Id
      int id;
      String name;
      
      @Formula(value = "(SELECT COUNT(*) FROM votes v WHERE v.book_id=id)"))
      Long votesCount;
    
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-14
      • 2015-02-27
      • 2011-07-16
      • 2011-03-29
      • 2019-08-15
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多