首页 > 解决方案 > 使用多对多关系实现类似功能

问题描述

我有这些数据库表

USER
id int
name varchar

ANSWER
id int
message varchar

user_answer_likes
user FK -> USER.id
answer FK -> ANSWER.id

user_answer_likes 表在那里,因此用户只能喜欢一次答案。不过,我对如何在我的 Spring 项目中实现这一点有疑问。

在答案实体中,我想知道答案的总喜欢数。我如何能够实现这一点,例如使用int答案实体中的属性?

标签: hibernatespring-bootspring-data-jpa

解决方案


1)在你的情况下,你有这种关系:

  1. 一个人 ---> 许多 Like_Answer
  2. 一个 Like_Answer --> 一个人
  3. 一个答案 ---> 许多 Like_Answer
  4. 一个喜欢的答案 --> 一个答案

所以你可以在表之间使用@ManytoOne 关系。并使用两个外键 PersonID 和 AnswerID 构造复合键 Like_Answer (PersonID, AnswerID)。

2) 对于另一个问题:Answer 的总点赞数不应该是 Answer 的属性。


推荐阅读