代码之家  ›  专栏  ›  技术社区  ›  tony

在更新过程中,它会增加一个新的Springboot java数据

  •  0
  • tony  · 技术社区  · 2 年前

    我在用springboot训练,h2 hibernate,试着做一个完整的crud。一切正常,只是当我修改一个数据时,它会修改所选的数据,但会在我的列表中再添加一个数据。谁能告诉我我的代码出了什么问题?提前谢谢。

    控制器:

    @PutMapping("/updateMovie/{id}")
        public ResponseEntity updateMovie(@PathVariable Long id, @RequestBody Movie movie){
            
            return ResponseEntity.ok(movieService.updateMovie(id, movie));
        }
    

    服务

    public Movie updateMovie(@PathVariable Long id, @RequestBody Movie movie){
    
            Movie currentMovie = movieRepository.findById(id).orElseThrow(RuntimeException::new);
            currentMovie.setTitle(movie.getTitle());
            currentMovie.setDescription(movie.getDescription());
            currentMovie.setDuration(movie.getDuration());
           
            return movieRepository.save(movie);
        }
    

    模型

    public class Movie {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="id")
        private Long id;
    
        @Column(name= "title")
        private String title;
    
        @NonNull
        @Column(name= "duration")
        private Integer duration;
    
        @Column(name= "description")
        private String description;
    }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   tbjorch rmd0001    2 年前

    你的代码中有一个bug。不更新现有记录,只需保存输入的电影对象,这将导致在数据库中创建新行。

    应该是 return movieRepository.save(currentMovie);