【问题标题】:Implement like functionality using ManyToMany relationship使用多对多关系实现类似功能
【发布时间】:2019-07-31 09:00:56
【问题描述】:

我有这些数据库表

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 项目中实现这一点有疑问。

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

【问题讨论】:

  • 这不应该是 Answer 的属性。它应该是存储库中定义的查询的结果。
  • @JBNizet 但是,如果它是 Answer Entity 的一部分并且在 AnswerRepository 中定义的(本机)查询中定义,那没有什么问题,对吧?

标签: hibernate spring-boot spring-data-jpa


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2018-11-29
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2019-02-28
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多