【问题标题】:Spring Data Jpa OneToMany save bidirectionalSpring Data Jpa OneToMany 双向保存
【发布时间】:2026-02-05 11:00:01
【问题描述】:

我在保存子实体时遇到问题。

这是我的例子。我的模型类如下所示:

@Entity
public class ImportDocument {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String title;

    private boolean imported;

    @Transient
    private Status status;

    @Basic
    private char statusValue;

    @OneToMany(mappedBy = "importDocument" , cascade = {CascadeType.ALL})
    private List<ImportDocumentItem> importDocumentItems;
}


@Entity
public class ImportDocumentItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "import_document_id")
    @JsonIgnore
    private ImportDocument importDocument;
}

我已经为两个域类实现了 JpaRepository 接口。 我尝试保存:

importDocumentRepository.save(importDocument);

当我保存ImportDocument 对象时,所有内容都已插入。但问题是,import_document_item.import_document_id(import_document_id 的外键)属性填充了空值,而不是我预期的 import_document 的 id。我该如何解决这个问题?

非常感谢。

【问题讨论】:

    标签: postgresql spring-boot spring-data-jpa


    【解决方案1】:

    你必须在保存之前设置双方的实体关系。这里是一个例子

    ImportDocument importDocument = new ImportDocument();
    //...
    importDocument.setImportDocumentItems(items);
    items.forEach(ImportDocumentItem::setImportDocument);
    
    importDocumentRepository.save(importDocument);
    

    【讨论】:

    • 你好,如何避免循环?
    最近更新 更多