i send this data i send this data but it always get null but it always get null
I want to comment on each movie
I don't know where the problem is
CommentController
It's the part where you get it through post-mapping and hand it over to service
I couldn't get movie_Id, so I got a movie_Id for the variable id
@PostMapping("/search/{title}/comments")
public ResponseEntity<CommentDto> addComment(@PathVariable String title,@RequestBody CommentDto dto) {
log.info("received Dto{}",dto.toString());
int id= moviesSearchService.findByTitletoId(title);
CommentDto commentDto=commentService.create(id,dto);
return ResponseEntity.status(HttpStatus.OK).body(commentDto);
}
When I look at the log, it says that the request body itself is null
like this
2024-05-05T00:14:57.173+09:00 INFO 1880 --- [softwareEngBE] [nio-8080-exec-1] c.e.s.controller.CommentApiController : received DtoCommentDto(id=0, movieId=0, rating=0, comment=null)
CommentService
It's a processing process of storing in the Repository, I don't think there's no problem.
public CommentDto create(int id, CommentDto dto) {
Movies movies = moviesRepository.findById(id)
.orElseThrow(()-> new IllegalArgumentException("No exist movie"));
Comment comment=Comment.createComment(dto,movies);
Comment created=commentRepository.save(comment);
return CommentDto.createCommentDto(created);
}
CommentDto
I can't find a lot of questions, but I can't find it.I put it well in the camelCase
public class CommentDto {
@JsonProperty("id")
private long id;
@JsonProperty("movie_Id")
private int movieId;
@JsonProperty("rating")
private int rating;
@JsonProperty("comment")
private String comment;
public static CommentDto createCommentDto(Comment comment) {
return new CommentDto(
comment.getId(),
comment.getMovies().getMovie_Id(),
comment.getRating(),
comment.getComment()
);
}
}
Comment, Movies Entity
It's my first time writing a code using fk and I think there might be a problem here as well
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne
@JoinColumn(name="movie_Id")
private Movies movies;
@Column
private int rating;
@Column
private String comment;
public static Comment createComment(CommentDto dto,Movies movies){
return new Comment(
dto.getId(),
movies,
dto.getRating(),
dto.getComment()
);
}
}
public class Movies {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int movie_Id;
@Column
private String title;
@Column
private String genres;
public static Movies createMovies(MoviesDto dto){
return new Movies(dto.getMovie_Id(), dto.getTitle(), dto.getGenres());
}
}
CommentRepository
@Repository
public interface CommentRepository extends JpaRepository<Comment,Long> {
@Query(value = "Select * " +
"from comment " +
"where movie_Id = :id",
nativeQuery = true)
List<Comment> findByMovieId(int id);
}
I want to create the value I sent you, not null
You are receiving null
values in your CommentDto
object because you are not using the right annotation @RequestBody
in your controller. You are using an annotation from swagger instead of spring. You have to change the import line in CommentApiController
from import io.swagger.v3.oas.annotations.parameters.RequestBody
to the one from Spring import org.springframework.web.bind.annotation.RequestBody
.
Hope it helps!