不应该更新时更新子实体Hibernate

时间:2019-06-09 03:30:48

标签: java mysql hibernate jpa

我有两个具有一对多关系的实体organizationorganizationStatus。组织包含组织详细信息(名称,地址等),而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。而不更新状态实体

0 个答案:

没有答案