我有两个主键分别为questionNumber和assessmentId的表。我想使用这两个来将它们组合到两个不同的表中。这有没有可能。我是不是应该添加一些东西来让它工作。或者有其他方法来实现它。或者我应该将问题元数据添加到问题中,并只使用AnswerKey中的组合键
Question
@Entity
@Getter
@Setter
public class Question implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int questionId;
private int questionNumber;
private String assessmentId;
private QuestionTypes questionType;
private String questionText;
private String questionURL;
private QuestionStatus questionStatus;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "questionNumber", referencedColumnName = "questionNumber")
private List<QuestionOption> questionOptions;
//Constructor
// Getter and setter
}
Assessment
@Entity
@JsonIgnoreProperties({"questionList"})
public class Assessment {
@Id
private String assessmentId;
private String assessmentTopic;
private String assessmentSubTopic;
private String assessmentLevel;
private String createdBy;
private String rating;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "assessmentId", fetch = FetchType.LAZY)
private List<Question> questionList;
//Constructor
//Setter and getter
}
QuestionMetaData
@Entity
public class QuestionMetaData {
@Id
private QuestionAssessmentKey questionAssessmentKey;
private String topicName;
private String subtopicName;
private QuestionComplexity complexity;
private String conceptName;
//Getter and setter
//Constructor
}
AnswerKey
@Entity
public class AnswerKey {
@Id
private QuestionAssessmentKey questionAssessmentKey;
private Character answer;
//Constructor
// Setter and getter
}
Key
@Embeddable
public class QuestionAssessmentKey implements Serializable {
private int questionNumber;
private String assessmentId;
//Constructor
//Setter and Getter
}
发布于 2018-07-29 07:58:25
这些是“派生的身份”,所以您的映射应该如下所示:
@Entity
public class Assessment {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String assessmentId;
private String assessmentTopic;
private String assessmentSubTopic;
private String assessmentLevel;
private String createdBy;
private String rating;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "assessment", fetch = FetchType.LAZY)
private List<Question> questionList;
// ...
}
@Entity
public class Question implements Serializable {
@EmbeddedId
private QuestionAssessmentKey questionAssessmentKey;
@ManyToOne
@MapsId("assessmentId") // maps assessmentId attribute of embedded id
private Assessment assessment;
private QuestionTypes questionType;
private String questionText;
private String questionURL;
private QuestionStatus questionStatus;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "questionNumber", referencedColumnName = "questionNumber")
private List<QuestionOption> questionOptions;
// ...
}
@Entity
public class QuestionMetaData {
@EmbeddedId
private QuestionAssessmentKey questionAssessmentKey;
private String topicName;
private String subtopicName;
private QuestionComplexity complexity;
private String conceptName;
@ManyToOne
@MapsId("assessmentId") // maps assessmentId attribute of embedded id
private Assessment assessment;
// ...
}
@Entity
public class AnswerKey {
@EmbeddedId
private QuestionAssessmentKey questionAssessmentKey;
private Character answer;
@ManyToOne
@MapsId("assessmentId") // maps assessmentId attribute of embedded id
private Assessment assessment;
// ...
}
@Embeddable
public class QuestionAssessmentKey implements Serializable {
private String assessmentId;
private int questionNumber;
// ...
}
https://stackoverflow.com/questions/51574098
复制相似问题