我有一个 2 表问题和答案。在问题表 2 中的字段 id 和 question。在 Answer 4 字段中,id、QuestionID 为 Question、answer 和 isCorrect 的 FK。非常简单的 2 关系 OneToMany。
我在这个表上创建了 2 个实体。HQL查询后
从问题
当尝试从 List 转换为 Json 时,我收到无限循环。使用杰克逊并注释@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;
}
如何正确创建表或如何正确创建实体?也许还有一些其他的错误。
谢谢!