根据您在问题中提供的信息,我认为您应该使用三个实体:
User
,
Question
Answer
. 用户可以提出多个问题,并提交多个问题的答案。答案总是属于一个问题。JPA有一些注解来模拟这些规则:
@Entity
class User {
@OneToMany(mappedBy = "user")
Set<Question> questions;
@OneToMany(mappedBy = "user")
Set<Answer> answers;
// Getters & setters
}
@Entity
class Question {
@ManyToOne
@JoinColumn(name = "user_id")
User user;
@OneToMany(mappedBy = "question")
Set<Answer> answers;
// Getters & setters
}
@Entity
class Answer {
@ManyToOne
@JoinColumn(name = "user_id")
User user;
@ManyToOne
@JoinColumn(name = "question_id")
Question question;
int score;
// Getters & setters
}
之后,您可以简单地迭代特定用户的答案并计算总分:
final int totalScore = user.getAnswers().stream().mapToInt(Answer::getScore).sum();
请注意,这只是一个基本的例子。您还应该考虑级联更新和获取关系类型。