hibernate - 如何在 Spring Data JPA 中更新 @OnetoMany 关系中的子实体
问题描述
我有一个父类:
@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
,我如何更新表attributeValue
中AdditionalAttribute
的 id ?
我所做的是:
从主实体获取列表
additionalAttributes
(我们从会话中获取的)遍历列表并获取每个
AdditionAttribute
对象。为对象设置新值。
是不是更新的好方法?我们有更好的方法吗?
解决方案
推荐阅读
- javascript - HTML JavaScript 从文件打印到页面
- javascript - “export”被转换为“export default”,防止导入
- javascript - 在 Node.js 中使用事件发射器进行垃圾收集
- javascript - 即使字段为空且不遵循模式,提交按钮也会调用 javascript 函数
- ubuntu - 在仅主机网络上使用 E_ACCESSDENIED 的 VirtualBox 提供程序失败
- asp.net-core - ASP.NET Core 5.0 nlog 实现不起作用
- javascript - React Hooks useState 数组存储问题
- c++ - 我可以使用模板和 std::index_sequence 计算 OpenCL 内核的加速比吗?
- python-3.x - 如何将 cv2 图像从客户端 python2 发送到 python3 服务器?
- flutter - :断言失败:第 3634 行第 18 行:'!keyReservation.contains(key)':不正确