首页 > 解决方案 > 更新表格以包含图像

问题描述

我已经成功创建了一个实体并可以发布到它。我希望能够使用 blob 文件更新表的列。当我发出发布请求时,我得到了成功响应,但是该行没有更新

这是实体

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Entity
    @Service
    public class Category {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long categoryId;
    
        @NotNull
        @Column(unique=true)
        @Size(min = 5, max = 20)
        private String categoryName;
    
        @Column(columnDefinition = "MEDIUMBLOB")
        private byte[] categoryImage;
    
        @NotNull
        @Size(min = 10, max = 50)
        private String categoryDescription;
    }

图片上传的 PUT 请求

    @PutMapping("/categories/{categoryId}/upload")
    public ResponseEntity<ResponseMessage> uploadImage(@PathVariable("categoryId") long catID,
            @RequestParam() MultipartFile file) {
        Optional<Category> category = catService.listCategoryById(catID);
        if (category.isPresent()) {
            try {
                Category _category = category.get();
                _category.setCategoryImage(imgService.storeImage(file));
                return new ResponseEntity<>(
                        new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
                        HttpStatus.CREATED);

            } catch (Exception e) {

                return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
                        HttpStatus.EXPECTATION_FAILED);

            }
        } else {
            return new ResponseEntity<>(new ResponseMessage("Category Does not exist"), HttpStatus.NOT_FOUND);
        }
    }

影像服务

    @Service
    public class ImageService {
    
        public byte[] storeImage(MultipartFile file) throws IOException {
            return file.getBytes();
        }
    }

当我执行 PUT 请求时,我得到了这个 PUT 请求图片

但是数据库没有更新。图像列保持为空 数据库行图片

你知道为什么吗?

标签: spring-bootjpaspring-data-jparest

解决方案


我在您的控制器代码中没有看到 service.save() 调用。你在坚持那个 _category 实体吗?

try {
      Category _category = category.get();                
      _category.setCategoryImage(imgService.storeImage(file));

      categoryService.save(_category);

      return new ResponseEntity<>(
                        new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
                        HttpStatus.CREATED);

  } catch (Exception e) {

       return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
                        HttpStatus.EXPECTATION_FAILED);

  }

推荐阅读