【发布时间】:2021-06-26 04:24:57
【问题描述】:
对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例。
我有 2 个类 OrganizationEntity 和 ApplicationEntity。组织和应用程序有多对多的关系。
OrganizationEntity 有
@ManyToMany(cascade = { CascadeType.PERSIST })
@JoinTable(
name = "APP_ORG_REF",
joinColumns = { @JoinColumn(referencedColumnName = "id") },
inverseJoinColumns = { @JoinColumn(referencedColumnName = "id") })
private Set<ApplicationEntity> applications;
ApplicationEntity 有
/**
* Many to Many Relationship ref with Application.
*/
@ManyToMany(mappedBy = "applications", cascade = CascadeType.ALL)
private Set<OrganizationEntity> organizations;
OrganizationOperationImpl.java
public OrganizationEntity createOrganizationEntity (final String org, final String app,
final String service) throws KMSCommonException
{
log.debug("Entered createOrganizationEntity");
createValidator(service, app, org, true).verify();
final ApplicationEntity applicationEntity =
applicationRepository.findByName(app, service);
if (applicationEntity == null) {
throw new KMSCommonException("Application doesn't exist.");
}
final OrgKeyRefEntity orgKeyRefEntity = OrgKeyRefEntity.builder().build();
final OrganizationEntity organizationEntity = OrganizationEntity.builder()
.name(org)
.uuid(UUID.randomUUID().toString())
.createdAt(new Timestamp(System.currentTimeMillis()))
.build();
addOrgAppRef(organizationEntity, applicationEntity);
return organizationEntity;
}
private void addOrgAppRef (final OrganizationEntity org, final ApplicationEntity
applicationEntity) {
final Set<ApplicationEntity> applicationEntities = new HashSet<>();
applicationEntities.add(applicationEntity);
org.setApplications(applicationEntities);
final Set<OrganizationEntity> organizationEntities = new HashSet<>();
organizationEntities.add(org);
applicationEntity.setOrganizations(organizationEntities);
applicationRepository.save(applicationEntity);
}
我的问题是,如果我使用 applicationRepository.save(applicationEntity) 保存 applicationEntity,它也会保存组织,因为我在该字段上定义了 CASCADETYPE.ALL。我收到此错误。
原因:org.hibernate.TransientPropertyValueException:对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例
【问题讨论】: