0
我有一個2表問題和答案。在問題表2字段id和問題。在答案4字段中,id,QuestionID爲FK to Question,answer和isCorrect。非常容易2關係OneToMany。從List到Json使用Jackson的無限循環
我在這個表上創建了2個實體。 HQL查詢
從問題
後,我收到無限循環,當試圖從列表轉換成JSON。使用傑克遜和annotate @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;
}
如何正確創建表或如何正確建立實體?也許還有其他的錯誤。
Thx!