【问题标题】:Java Hibernate - Persisting Hashmaps within Hashmaps?Java Hibernate - 在哈希图中持久化哈希图?
【发布时间】:2018-04-07 03:00:36
【问题描述】:

背景:我希望用户参加员工筛选测试,其中每个问题都与另一个问题“配对”,但问题的措辞不同。

用户类中下面的 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;

【问题讨论】:

    标签: java database hibernate hashmap persistence


    【解决方案1】:

    我建议不要在您的实体类中使用如此复杂的结构。 如果您有类似问题的规范问题,您可以添加

    @OneToOne
    Question canonical;
    

    您可以在上层创建更适合您的结构(如服务)。

    您还可以创建一个查找类似问题或规范问题的服务方法。因此,在添加新问题之前,请检查是否已存在类似问题。

    另一种选择是允许不同的问题有相同的答案。如果您不想在同一个测试中多次获得相同的答案,只需找到具有不同答案的问题即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 2015-01-06
      • 2017-04-06
      • 2014-02-01
      • 1970-01-01
      • 2013-03-21
      • 2011-06-19
      • 2017-06-21
      相关资源
      最近更新 更多