Я пытаюсь добавить comment
к родителю, если он принадлежит ему.Comment
- это самосвязанная сущность «многие ко многим», как показано ниже.
В этой функции я пытаюсь выяснить, принадлежит ли Comment
родительскому элементу, выполняя поиск, имеет ли онparentId
до getParentId()
.
Если оно не равно нулю, должен быть родитель, поэтому найдите этот родитель и добавьте этот экземпляр comment
в качестве одного из набора subComment
родительского.
Я могупохоже, что не удалось сохранить новые добавленные подкомменты.
public ResponseEntity<Comment> addComment(Comment comment) {
Comment newComment = commentRepository.save(comment);
if (newComment.getParentId() != null) {
Comment parent = commentRepository.findById(newComment.getParentId()).orElse(null);
if (parent != null) {
Set<Comment> parentSubcComment = parent.getSubComments();
parentSubcComment.add(newComment);
parent.setSubComments(parentSubcComment);
commentRepository.save(parent);
}
}
return ResponseEntity.ok(newComment);
}
Класс сущности Comment.java
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashSet;
import java.util.Set;
@Entity
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
private String text;
@CreationTimestamp
private LocalDateTime createDateTime;
@OneToMany(mappedBy = "parentComment")
private Set<Comment> subComments = new HashSet<>();
@ManyToOne
@JoinColumn(referencedColumnName = "id")
private Comment parentComment;
private int likeCount = 0;
private boolean isParent;
private String parentId;
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Set<Comment> getSubComments() {
return subComments;
}
public void setSubComments(Set<Comment> subComments) {
this.subComments = subComments;
}
public Comment getParentComment() {
return parentComment;
}
public void setParentComment(Comment parentComment) {
this.parentComment = parentComment;
}
public boolean getIsParent() {
return isParent;
}
public void setIsParent(boolean isParent) {
this.isParent = isParent;
}
public int getLikeCount() {
return likeCount;
}
public void incLikeCount() {
this.likeCount++;
}
public String getCreateDateTime() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy @ hh:mm a");
return createDateTime.format(formatter);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public String toString() {
return "id: " + id + " text: " + text + " isParent: " + isParent + " parentId: " + parentId;
}
}