Классы:
@Entity
@Table(name = "question")
@Data
@NoArgsConstructor
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String text;
@OneToMany(mappedBy="question", fetch = FetchType.LAZY)
private List<Answer> answers;
public void addAnswer(Answer answer){
answer.setQuestion(this);
this.answers.add(answer);
}
}
@Entity
@Table(name = "answer")
@Data
@NoArgsConstructor
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column
private String text;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="question_id")
private Question question;
}
Контроллер:
@RestController
@CrossOrigin("*")
@RequestMapping("/question")
public class QuestionController {
@Autowired
private QuestionRepository questionRepository;
@GetMapping
public List<Question> list(){
return questionRepository.findAll();
}
@PostMapping(value = "")
public Question add(@RequestBody Question question){
return questionRepository.save(question);
}
}
вызов 'localhost: 8080 / answer' возвращает это:
{
"text": "something else again",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something",
"question": {
"id": 4,
"text": "question 3",
"answers": [
Разве это не просто вернуть что-то вроде этого:
{
"text": "something else again",
"question": {
"id": 4,
"text": "question 3",
"answers": [
{
"id": 1,
"text": "something"
}
]
}