У меня есть объекты с однонаправленными отношениями ManyToMany. Документ может быть связан с несколькими объектами и несколькими этажами. Если документ обновляется, объекты и этажи, связанные с документом, должны создавать новую ревизию в envers по мере изменения коллекции. К сожалению, этого не происходит. Вопрос в том, как распространить изменения в дочернем объекте (документе) на сторону-владельца отношения многие ко многим (объект, этаж)?
Информация об используемых библиотеках:
- ВЕСЕННЯЯ ЗАГРУЗКА 2.0.5.RELEASE
- ДЕТАЛИ ВЕСНОЙ ЗАГРУЗКИ JPA 2.0.5.RELEASE
- HIBERNATE 5.2.17.Final
- HIBERNATE ENVERS 5.2.17.Final
@Entity
@Table(name = "facility")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Facility extends AbstractAuditingEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
// more attributes
@ManyToMany
@JoinTable(name = "facility_documents",
joinColumns = @JoinColumn(name = "facilities_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "documents_id", referencedColumnName = "id"))
@Audited(targetAuditMode = AUDITED)
private Set<Document> documents = new HashSet<>();
// getter + setter
}
@Entity
@Table(name = "floor")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Floor extends AbstractAuditingEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
// more attributes
@ManyToMany
@JoinTable(name = "floor_documents",
joinColumns = @JoinColumn(name = "floors_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "documents_id", referencedColumnName = "id"))
@NotAudited
private Set<Document> documents = new HashSet<>();
}
@Entity
@Table(name = "document")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Document extends AbstractAuditingEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
// more attributes, getters and setters but no ManyToMany Mapping to facility and floor
}
Следующие записи таблицы аудита envers записываются с использованием следующей процедуры:
1. СОСТОЯНИЕ: Создан объект + документ, обновлен объект, добавив в него документ
![enter image description here](https://i.stack.imgur.com/OkYYz.png)
2. СОСТОЯНИЕ: удален документ
Ожидается: новая редакция создана для объекта Фактическая: редакция не создана для объекта
3. СОСТОЯНИЕ: вручную обновленный объект
![enter image description here](https://i.stack.imgur.com/gSesw.png)
Если я сейчас получу текущий список изменений объекта, документ больше не будет в ревизии и будет помечены как удаленные из объекта. Это обновление должно произойти автоматически при изменении документа.