java - Spring Data - ManyToOne 未持久化
问题描述
在我的应用程序中,我有这三个类
@Entity
@Indexed
public class CpamEntity {
@Id
private String externalId;
@Field
private String cgr;
@ElementCollection
private Set<AttachmentEntity> attachments;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "externalId")
private Set<DataEntity> data;
}
@Entity
@Indexed
public class DataEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String internalId;
@Field
private String number;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "externalId", updatable = false)
private FrameworkEntity frameworkEntity;
}
下面的代码是将DataEntity(X)插入CpamEntity,然后通过IdChild获取所有附件CpamEntity并在其中插入相同的DataEntity(X)
问题是第一次插入没有发生,并且附件 CpamEntity 插入
public void on(Event event) {
CpamEntity cpamEntity = getCpamEntity(event.externalId);
if (cpamEntity != null) {
Set<DataEntity> datas = cpamEntity.getData();
datas.add(new DataEntity(event.internalId, event.number));
cpamEntity.setData(datas);
repository.save(cpamEntity); // not saved
if (CollectionUtils.isNotEmpty(cpamEntity.getAttachments())) {
cpamEntity.getAttachments().forEach(attachment -> {
cpamRepositoryentity = repository.findByCgr(attachment.getIdChild());
if (entity != null) {
Set<Entity> dataEntities = entity.getData();
dataEntities.add(new DataEntity(event.internalId, event.number));
entity.setData(dataEntities);
cpamRepository.save(entity); // saved
}
});
}
}
}
解决方案
推荐阅读
- sql - 如何为同一 ID 找到除 null 之外的唯一行?
- postgresql - 从表中选择单个随机行的最佳方法
- android - 如何在Android中实现动态代码加载?
- java - 如何使用改造存储 json 数组响应
- flutter - Flutter:CustomPainter 绘制方法被多次调用,而不是只调用一次
- python - 你好,我如何解决这个 sqlalchemy 传递 URI 错误?
- python - 计算数组中从 x 到 x 个周期的变化
- javascript - 如何加快nodejs中的函数调用
- javascript - 滑块自动滚动
- reactjs - 如何在非反应模块中使用 moment() 库(对于 React 项目)?