@Entity
public class Comment {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String content;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "parent_id")
private Comment parentComment;
@OneToMany(mappedBy="parentComment", cascade = CascadeType.ALL)
private List<Comment> childrenComments = new ArrayList<>();
}
public interface CommentRepository extends JpaRepository<Comment, Long> {
}
Вот как я сохраняю ответы для конкретного комментария.
Comment parent = new Comment();
parent.setContent(" 1 comment");
parent = commentRepository.save(parent);
Comment reply1 = new Comment();
reply1.setContent("reply 1 to comment 1");
reply1.setParentComment(parent);
Comment reply2 = new Comment();
reply1.setContent("reply 2 to comment 1");
reply1.setParentComment(parent);
parent = commentRepository.save(parent);
Когда я делаю commentrepository.findAll ()
Я хотел бы вернуть следующие данные json,
{
"id": 1,
"content": "1 comment",
"replies" :[
{
"id": 2,
"content": "reply 1 to comment 1"
},
{
"id": 3,
"content": "reply 2 to comment 1"
}
]
}
Моя цель - создать систему комментариев в стиле Reddit.Где каждый комментарий имеет массив комментариев (ответов).Когда я запрашиваю все комментарии, используя весенние данные jpa, мне нужны только корневые комментарии и их вложенные ответы.
В приведенном выше случае не нужно что-то вроде этого:
{
{
"id": 1,
"content": "1 comment",
"replies" :[
{
"id": 2,
"content": "reply 1 to comment 1"
},
{
"id": 3,
"content": "reply 2 to comment 1"
}
]
}
{
"id": 2,
"content": "reply 1 to comment 1"
}
{
"id": 2,
"content": "reply 1 to comment 1"
}
}
Я провел несколько дней без успеха.Я пытался использовать @jsonIgnore и другие аннотации Джексона без успеха.Любые предложения или рекомендации?Спасибо в аванс.Вас ценят!