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

时间:2020-03-12 05:05:50

标签: hibernate jpa spring-data-jpa

我有一个家长班:

@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更新attributeValue表中的AdditionalAttribute

我所做的是:

  1. 从主实体(我们从会话获得的实体)中获取additionalAttributes的列表

  2. 遍历列表并获取每个AdditionAttribute对象。

  3. 为对象设置新值。

这是更新的好方法吗?我们有更好的方法吗?

0 个答案:

没有答案