Как просто провести аудит, если набор сущностей изменяется, то есть добавление дополнительных сущностей к этому набору (НЕ самой сущности) - PullRequest
0 голосов
/ 29 мая 2019

Персона является проверяемой организацией и уже помечена @Audited. Одним из свойств является набор адресов, и этот набор аннотируется @OneToMany. Сам адрес не подлежит аудиту. Если мне когда-либо придется изменить набор адресов, добавив новый адрес (а не сам объект адреса), я должен провести аудит в другой таблице с именем person_aud_addresses. Таблица person_aud_addresses должна содержать добавленный address_id и ревизию лица из person_aud.

@Entity
@Table(name = "person")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Audited
public class Person implements Serializable {
     .....
     @OneToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) //its not working because Address should not be auditable
    private Set<Address> addresses = new HashSet<>();
     .....
}

@Entity
@Table(name = "person_aud")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class PersonAud implements Serializable {   

    ....

    @OneToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Address> addresses = new HashSet<>();

    ....
}

@Entity
@Table(name = "address")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Address implements Serializable {

    ....
    @ManyToOne
    @JsonIgnoreProperties("addresses")
    private Person person;
    ....

}
...