我有一个家长班:
@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
?
我所做的是:
从主实体(我们从会话获得的实体)中获取additionalAttributes
的列表
遍历列表并获取每个AdditionAttribute
对象。
为对象设置新值。
这是更新的好方法吗?我们有更好的方法吗?