我想评论每部电影
不知道问题出在哪里
评论控制器
这是你通过后期映射获取并交给服务的部分
我无法获取movie_Id,所以我得到了变量id的movie_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);
}
当我查看日志时,它说请求正文本身为空
像这样
2024-05-05T00:14:57.173+09:00 INFO 1880 --- [softwareEngBE] [nio-8080-exec-1] c.e.s.controller.CommentApiController : 收到 DtoCommentDto(id=0, movieId=0, rating=0 ,评论=空)
评论服务
是存储到Repository的一个处理过程,我觉得没有问题。
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);
}
评论D至
很多题都找不到,但我找不到,我把它很好地放在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()
);
}
}
评论、电影实体
这是我第一次使用fk编写代码,我认为这里也可能存在问题
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());
}
}
评论库
@Repository
public interface CommentRepository extends JpaRepository<Comment,Long> {
@Query(value = "Select * " +
"from comment " +
"where movie_Id = :id",
nativeQuery = true)
List<Comment> findByMovieId(int id);
}
我想创建我发送给你的值,而不是 null
您在
null
对象中接收 CommentDto
值,因为您没有在控制器中使用正确的注释 @RequestBody
。您正在使用 swagger 而不是 spring 的注释。您必须将 CommentApiController
中的导入行从 import io.swagger.v3.oas.annotations.parameters.RequestBody
更改为 Spring import org.springframework.web.bind.annotation.RequestBody
中的导入行。
希望有帮助!