【发布时间】:2019-08-20 23:48:07
【问题描述】:
我的应用程序中有一种父对象需要进行版本控制(审核),我的意思是:每次对其进行更改,或者对其任何 n 深子对象进行持久化时,都会进行新修订必须创建。
@Entity class Document {
@Id String name;
// some props ...
@OneToMany List<Page> pages;
// getters and setters ...
}
@Entity class Page {
@Id Long number;
@ManyToOne Document document;
// some props ...
String header;
// getters and setters ...
}
在上面的示例中,如果我要更改页面的标题,则应为整个 Document 实体保留新的修订:
// retrieve document
Document document = documentRepository.findById(myBookId);
// change something on first found page
document.getPages().iterator().next().setHeader("Hello World");
// persist the document
documentRepository.save(document);
// new revision of the document!
我正在考虑使用Javers 或Envers,但似乎他们都做不到。
你们中有人知道如何在这些库上做类似的事情吗?或者知道我可以为此目的使用的任何库吗?
【问题讨论】:
-
哪一方是所有者,因为您提供的映射没有指定一方是该关系的反向(非所有者)。
-
在本例中为
Page。OneToMany/ManyToOne双向的one侧怎么可能是所有者?
标签: java hibernate audit hibernate-envers javers