如何在Spring Data JPA中更新@OnetoMany关系中的子实体

7gcisfzg  于 2023-08-06  发布在  Spring
关注(0)|答案(1)|浏览(193)

我有一个家长班:

@Entity(name = "Master")
@Table(name = "master")
public class Master {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "name") 
    private String name;

    @OneToMany(mappedBy = "master", cascade = CascadeType.ALL, fetch = FetchType.Lazy)
    List<AdditionalAttribute> additionalAttributes = new ArrayList<>();

    public void addAttributes(AdditionalAttribute attribute) {
        additionalAttributes.add(attribute);
        attribute.setFindings(this);
    }

    public void removeAttributes(AdditionalAttribute attribute) {
        additionalAttributes.remove(attribute);
        attribute.setFindings(null);
    }
}

字符串
子类:

@Entity(name = "additional_attribute")
public class AdditionalAttribute {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Id;

    private String attributeName;

    @Column(length = 255)
    private String attributeValue;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "master_id")
    private Master master;

}


现在假设我已经在两个表中插入了数据,如:

Master
 ================
 id.      name
 1.       xyz

 AdditionalAttribute
======================================================
 id.     attributeName.   attributeValue.    master_id
 1         Acme               test               1
 2.        loreal             red                1


现在,给定master_id,如何为该id更新AdditionalAttribute表中的attributeValue??
我所做的是:
1.从主实体(我们从会话中获得的那个)获得additionalAttributes的列表
1.遍历列表并获取每个AdditionAttribute对象。
1.为对象设置新值。
这是一个很好的更新方式吗?我们有更好的办法吗?

mgdq6dx1

mgdq6dx11#

如果你知道你的应用程序想要更新一个AdditionalAttribute记录,我建议你从AdditionalAttribute端搜索,例如,如果你使用JPARepository,你可以使用findByMaster(Long masterId)而不是从MasterRepository搜索并进行迭代。

相关问题