hibernate - Hibernate Envers 多对多变化检测
问题描述
我有具有单向多对多关系的实体。一个文档可以与多个设施和多个楼层相关联。如果更新了文档,则与文档相关的设施和楼层应在修改集合时在 envers 中创建新的修订。不幸的是,这不会发生。问题是如何将子实体(文档)中的更改传播到多对多关系(设施、楼层)的拥有方?
使用过的库的相关资料:
- 春季启动 2.0.5.RELEASE
- 春季启动数据 JPA 2.0.5.RELEASE
- 休眠 5.2.17.Final
- 休眠环境 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.状态:创建设施+文档,通过添加文档来更新设施
2. 状态:删除文件
3. 状态:手动更新设施
如果我现在获取设施的当前变更日志,则该文档不再在修订版中,并被标记为从设施中删除。此更新应通过更改文档自动发生。
解决方案
推荐阅读
- angular - 有没有办法查看 Angular 的 webpack 配置?
- asp.net - 发布时服务器上的 bin 文件夹中的 ASP.NET 项目 .dll 未覆盖
- swift - 隐藏静态库中的代码问题 - Swift
- javascript - 在网站文件夹中打开主目录后,如何将事件侦听器添加到子文件夹
- php - 带有MySQL表名变量的PHP查询
- google-apps-script - 让用户输入独立的 Google Apps 脚本代码
- android - 在 AGP 更新到 4.1.0 后,ApkSigner 无法签署 APK
- python - Django Docker Image Recreation
- python - 在 jupyter 笔记本上无法显示 Altair 图表
- c++ - 尝试引用已删除函数的结构匿名未标记联合错误