我有两个具有一对多关系的实体organization
和organizationStatus
。组织包含组织详细信息(名称,地址等),而organizationStatus
的状态为ACTIVE, PENDING, BLOCKED
组织课
@Entity
@Table(name = "organization", schema = "user_mgt")
public class Organization {
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "organization_status")
private OrganisationStatus organisationStatus;
}
organizationStatus类
@Entity
@Table(name = "organization_status", schema = "user_mgt")
public class OrganisationStatus {
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "organisationStatus")
private List<Organization> organization;
}
持久化将通过手动创建对象来完成。在这里,将创建OrganisationStatus对象,并将其设置为组织实体。只会保留组织实体
OrganisationStatus organisationStatus = new OrganisationStatus();
organisationStatus.setStatus("ACTIVE");
Organization organization = new Organization();
organization.setName("abc");
organization.setAddress("pqr");
organization.setOrganisationStatus(organisationStatus);
// session factory create, start transaction etc..
session.save(organization);
所有组织状态已经插入到数据库(ACTIVE, PENDING, BLOCKED
)中。当组织实体被更新时,我只需要引用organizationStatus实体,并且不想使用新记录来更新organizationStatus实体。由于级联定义在关系中被定义为CascadeType.ALL
,因此当前的实现做到了这一点。处理此问题的理想方法是什么。保留OrganisationStatus
实体时,仅引用Organization
。而不更新状态实体