Мне нужно создать отношение многие-к-одному, и я не знаю, правильно ли я это делаю, потому что я не могу корректно обновлять и удалять.Я использую Spring boot и JPA-репозиторий на Java, база данных mysql.
У меня есть сообщение с именем, каждое сообщение может иметь несколько комментариев, но мне нужно использовать все вместе, если я хочу добавить комментарий, я отправил сообщение с новым комментарием, например:
{
"name":"PostName",
"comment: [
{
"text":"comment 1"
},
{
"text":"comment 2"
}
]
}
Post.java
@Entity
public class Post {
@Id
@Column(name = "Post")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "post")
private List<Comments> Comments = new ArrayList<>();
// Get and Set
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Comments.java
@Entity
public class Comments {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String text;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
@JsonIgnore
private Post post;
// Get and Set
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
PostRepository.java
public interface PostRepository extends JpaRepository<Post, Long> {
Club findByName(@Param("name") String name);
}
Controller.java
@Autowired
PostRepository postRepository;
@RequestMapping(value="/posts", method=RequestMethod.GET, produces = "application/json")
public ResponseEntity<?> getPost(Pageable pageable){
try {
Page<Post> posts = postRepository.findAll(pageable);
return new ResponseEntity<>(posts,HttpStatus.ACCEPTED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
}
}
@RequestMapping(value="/newPost", method=RequestMethod.POST, produces = "application/json")
public ResponseEntity<?> newPost(@RequestBody Post post){
try {
for (Comments comments: post.getComments()){
comments.setPost(post);
}
postRepository.save(post);
return new ResponseEntity<>(HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
}
}
Я не знаю, правильна ли моя работа, и мне нужны методы обновления и удаления.