我有一个家长班:
@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.为对象设置新值。
这是一个很好的更新方式吗?我们有更好的办法吗?
1条答案
按热度按时间mgdq6dx11#
如果你知道你的应用程序想要更新一个AdditionalAttribute记录,我建议你从AdditionalAttribute端搜索,例如,如果你使用JPARepository,你可以使用findByMaster(Long masterId)而不是从MasterRepository搜索并进行迭代。