问题描述
我在持久化父类 ProxyEntity 时遇到问题,我看到在代理表中添加了重复的行。知道在保存父类时,它也会保存子类(codeEntity,这是一个集合) 查看日志后,先保存父类,然后在保存子类时,它会再次保存proxyEntity的另一条记录。 (我使用的是双向关联)
ProxyEntity 类:
@Entity
@Getter
@Setter
@ToString
@Table(name = "PROXY")
public class ProxyEntity implements Persistable {
protected static final Logger logger = LoggerFactory.getLogger(ProxyEntity.class);
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ_PROXY_ID")
@SequenceGenerator(name = "SEQ_PROXY_ID",sequenceName = "SEQ_PROXY_ID",allocationSize = 1)
@Column(name = "PROXY_ID")
private Long proxyId;
@OnetoOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "BRAND_STATUS_ID",referencedColumnName = "BRAND_STATUS_ID")
private BrandStatus brandStatus;
@Column(name = "DATE_CREATION")
private Date dateCreation;
@Column(name = "CREATED_BY")
private String createdBy;
@OnetoMany( mappedBy = "proxyEntity",cascade = CascadeType.ALL,fetch = FetchType.LAZY,orphanRemoval = true)
private Set<CodeEntity> codes = new HashSet<>();
@Override
public Long getId() {
return proxyId;
}
@Override
public boolean isNew() {
return proxyId== null;
}
}
代码实体.java
@Entity
@Getter
@Setter
@ToString
@Table(name = "CODES")
public class CodeEntity implements Persistable {
protected static final Logger logger = LoggerFactory.getLogger(CodeEntity.class);
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ_CODE_ID")
@SequenceGenerator(name = "SEQ_CODE_ID",sequenceName = "SEQ_CODE_ID",allocationSize = 1)
@Column(name = "CODE_ID")
private Long codeId;
@Column(name = "CODE")
private String code;
@Column(name = "CODE_DESC")
private String codeDesc;
@Column(name = "DATE_CREATION")
private Date dateCreation;
@Column(name = "CREATED_BY")
private String createdBy;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PROXY_ID")
private proxyEntity proxyEntity;
@Override
public Long getId() {
return codeId;
}
@Override
public boolean isNew() {
return codeId == null;
}
}
我保存每个实体的部分:
codesLst.stream().forEach(code -> {
CodeEntity codeEntity = new CodeEntity();
codeEntity.setDateCreated(new Date());
codeEntity.setCreatedBy(reatedBy);
codeEntity.setCode(code);
codeEntity.setProxyEntity(proxy);
codeSet.add(codeEntity);
});
proxy.setCodes(codesLst);
我正在使用 Spring Data Jpa 持久化数据:
List<ProxyEntity> persistedProxies = proxyRepository.saveAll(proxyEntityList);
非常感谢您对这个问题的帮助。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)