Обновляйте дочерние объекты, когда они не должны обновляться. Hibernate - PullRequest
0 голосов
/ 09 июня 2019

У меня есть две сущности 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 class

@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. И не обновлять статус сущности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...