相关疑难解决方法(0)

删除然后创建记录导致使用Spring Data JPA重复密钥冲突

所以,我有这个场景,我需要获取标题记录,删除它的详细信息,然后以不同的方式重新创建详细信息.更新细节会非常麻烦.

我基本上有:

@Transactional
public void create(Integer id, List<Integer> customerIDs) {

    Header header = headerService.findOne(id);
    // header is found, has multiple details

    // Remove the details
    for(Detail detail : header.getDetails()) {
        header.getDetails().remove(detail);
    }

    // Iterate through list of ID's and create Detail with other objects
    for(Integer id : customerIDs) {
        Customer customer = customerService.findOne(id);

        Detail detail = new Detail();
        detail.setCustomer(customer);

        header.getDetails().add(detail);
    }

    headerService.save(header);
}
Run Code Online (Sandbox Code Playgroud)

现在,数据库具有如下约束:

Header
=================================
ID, other columns...

Detail
=================================
ID, HEADER_ID, CUSTOMER_ID

Customer
=================================
ID, other columns...

Constraint: …
Run Code Online (Sandbox Code Playgroud)

java spring persistence jpa

8
推荐指数
2
解决办法
5721
查看次数

标签 统计

java ×1

jpa ×1

persistence ×1

spring ×1