Spring @OneToOne映射下图片上传后产品表image_id为空问题
Spring @OneToOne关联问题:产品上传后image_id字段为空
在Spring项目中使用@OneToOne映射实现图片与产品的关联,上传图片时可成功获取image_id,但使用该ID上传产品后,产品表的image_id字段始终为空。
产品实体代码
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "products", schema = "foodbox") public class Product { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id @Column(name = "product_id") private int productId; @Basic @Column(name = "name") private String name; @Basic @Column(name = "description") private String description; @Basic @Column(name = "price") private BigDecimal price; @Basic @Column(name = "quantity_in_stock") private int quantityInStock; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "image_id", referencedColumnName = "image_id") private Image image; }
图片实体代码
@NoArgsConstructor @Getter @Setter @Entity @Table(name = "images", schema = "foodbox") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "image_id", nullable = false) private Integer id; @Column(name = "image_name", nullable = false) private String name; @Lob @Column(name = "image_data", nullable = false) private byte[] imageData; public Image(String name, byte[] data) { this.name = name; this.imageData = data; } }
图片上传相关代码
控制器(ImageController.java)
@PostMapping(value = "/image",consumes = MediaType.MULTIPART_FORM_DATA_VALUE ) public ResponseEntity<Integer> createImage(@RequestPart("image") MultipartFile data) throws IOException { String name = data.getOriginalFilename(); Image image = imageService.createImage(name, data.getBytes()); return ResponseEntity.ok(image.getId()); }
服务层(ImageService.java)
public Image createImage(String name,byte[] data) { Image image = new Image(name,data); return this.imageRepository.save(image); }
仓库层(ImageRepository)
Image save(Image image);
产品上传相关代码
控制器(ProductController.java)
@PostMapping(value="/products") public Product createProduct(@RequestBody Product product) { return productService.createProduct(product); }
服务层(ProductService.java)
public Product createProduct(Product product) { return productRepository.save(product); }
仓库层(ProductRepository,继承CrudRepository)
@Override Product save(Product product);
内容的提问来源于stack exchange,提问作者Abrar
相关产品推荐
相关产品推荐

