如何解决从另一个表 JPA 分配给实体字段计数
我正在使用 Spring Boot、HsqlDB 和数据 JPA。我有两个实体:Book(int id,String name,long VotesCount) 和 Vote(int id,int book_id) 我需要将书籍表中的所有条目放入 List
所以,对于给定的表 图书: 身份证名称 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;
}
解决方法
你可以在@Formula中使用计算字段votesCount;
@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;
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。