You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:36:34