【发布时间】:2022-08-24 21:59:22
【问题描述】:
我有以下设置:
@Entity
@Audited
public class House {
@OneToOne(cascade = CascadeType.ALL)
private Door frontDoor;
// ...
}
@Entity
@Audited
public class Door {
private String color;
// ...
}
然后在我的代码中的其他地方以下几行:
// #1: Creation of house
var house = new House();
var door = new Door();
door.setColor(\"red\");
house.setFrontDoor(door);
houseRepository.save(door);
// #2: Modification of the front door
// (in another method)
var house = houseRepository.getById(/*...*/);
var door = house.getDoor();
door.setColor(\"blue\");
houseRepository.save(house);
所以我在审计表中得到的是这样的:
DOOR_AUD:
| ID | COLOR | REV | REVTYPE |
|---|---|---|---|
| 1 | red | 1 | 0 |
| 1 | blue | 2 | 1 |
HOUSE_AUD:
| ID | FRONT_DOOR | REV | REVTYPE |
|---|---|---|---|
| 2 | 1 | 1 | 0 |
但是,我需要在HOUSE_AUD 中获得一个新条目
(就像我要修改house 中的直接/原始属性一样):
| ID | FRONT_DOOR | REV | REVTYPE |
|---|---|---|---|
| 2 | 1 | 1 | 0 |
| 2 | 1 | 2 | 1 |
有没有办法告诉 Envers 为所有受影响的父母创建一个新的修订版?
标签: java hibernate-envers