私は2つのテーブルの質問と回答を持っています。Question テーブル 2 のフィールド id と question。Answer 4 フィールドでは、id、Question、answer、および isCorrect の FK としての QuestionID。非常に簡単な 2 リレーション OneToMany。
このテーブルに 2 つのエンティティを作成します。HQL クエリの後
質問から
List から Json に変換しようとすると、無限ループが発生します。jackson を使用して @JsonIgnore に注釈を付けますが、役に立ちませんでした。@JsonManagedReference と @JsonBackReference も追加してください。同じ問題です。
質問
CREATE TABLE `question` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`Question` VARCHAR(200) NOT NULL,
PRIMARY KEY (`ID`)
)
答え
CREATE TABLE `answer` (
`ID` INT(10) NOT NULL AUTO_INCREMENT,
`QuestionID` INT(11) NOT NULL,
`Answer` VARCHAR(50) NOT NULL,
`IsCorrect` TINYINT(1) NULL DEFAULT '0',
PRIMARY KEY (`ID`),
INDEX `FK_Question` (`QuestionID`),
CONSTRAINT `FK_Question` FOREIGN KEY (`QuestionID`) REFERENCES `question` (`ID`)
)
実在物
@Entity
@Table(name = "Question")
public class Question implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String question;
@JsonManagedReference("question-answers")
@OneToMany(mappedBy="question")
private List<Answer> answers;
.....getters/setters
@Override
public String toString() {
return "Question [id=" + id + ", question=" + question + ", answers="
+ answers + "]";
}
回答エンティティ
@Entity
public class Answer{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
// @GeneratedValue
private int id;
private String answer;
private byte isCorrect;
@ManyToOne(optional = false)
@JoinColumn(name="QuestionID")
@JsonBackReference("question-answer")
private Question question;
.....getters/setters
@Override
public String toString() {
return "Answer {id:" + id + ", answer:" + answer + ", isCorrect:"
+ isCorrect + "}";
}
コントローラー
@RequestMapping("/home")
@JsonIgnore
public @ResponseBody List<Question> home(){
List<Question> qu = questionService.getQuestion();
return qu;
}
テーブルを作成する方法またはエンティティを作成する方法は正しいですか? 多分他のいくつかの間違い。
どうも!