背景:我希望用户参加员工筛选测试,其中每个问题都是"配对"另一个问题,但问题措辞不同。
用户类下面的HashMap仅在以下情况下有效:
Map<Question, Answer> answers = new HashMap<>();
但是,我的程序会有两个不同的答案,分别是两个相似的问题。关于如何设置课程的任何建议?试图坚持HashMap的HashMap有意义吗?我应该为MatchingAnswers设一个单独的课吗?
由于
@Entity
public class User {
@Id
@GeneratedValue
int id;
@OneToMany(mappedBy = "user")
@MapKeyJoinColumn(name="QUESTION_ID")
Map<Map<Question, QuestionMatch>,Answer> answers = new HashMap<>();
}
@Entity
public class Question {
@Id
@GeneratedValue
private int id;
@NotNull
@Size(min = 3, message = "Please add a question")
private String question1;
public Integer desiredAnswer1;
private Boolean matchingOpposite;
@OneToOne //not sure if this is necessary
QuestionMatch matchingQuestion;
@Entity
public class Answer {
@Id
@GeneratedValue
private long id;
private int answer;
private int matchingAnswer;
@ManyToOne
private User user;
@ManyToOne
@JoinColumn(name="QUESTION_ID")
Question question;
@Entity
public class QuestionMatch {
@Id
@GeneratedValue
private int id;
@NotNull
@Size(min=3, message = "Please add a question")
private String questionMatch;
public int desiredAnswerForQuestionMatch;
答案 0 :(得分:0)
我建议不要在你的实体类中使用这种复杂的结构。 如果您对类似问题有规范性问题,可以添加
@OneToOne
Question canonical;
您可以在上层为您创建更适合的结构(如服务)。
您还可以创建一个查找类似问题或规范问题的服务方法。因此,在添加新问题之前,请检查是否已存在类似问题。
另一个选择是允许不同的问题有相同的答案。如果您不希望在同一个测试中多次使用相同的答案,只需找到具有不同答案的问题。