简而言之,我有两个类 Person 和 Attribut:
@Entity
@Indexed
@Table(name="persons")
public class Person {
private int id;
private List<Attribute> attributes;
@Id
@DocumentId
@GeneratedValue
@Column(name="person_id")
public int getId() {
return id;
}
@ManyToMany
@JoinTable(
name="attribute_alloc",
joinColumns={@JoinColumn(name="person_id")},
inverseJoinColumns={@JoinColumn(name="attribute_id")}
)
@Audited
public List<Attribute> getAttributes() {
return attributes;
}
// other properties, setters and getters...
}
@Entity
@Indexed
@Table(name="attributes")
public class Attribute {
private int id;
private List<Person> persons;
@Id
@DocumentId
@GeneratedValue
@Column(name="attribute_id")
public int getId() {
return id;
}
@ManyToMany(mappedBy="attributes")
public List<Attribute> getPersons() {
return persons;
}
// other properties, setters and getters...
}
对于这些类,正确生成了数据库表 people、attributes、attribute_alloc、persons_aud、attributes_aud 和 attribute_alloc_aud。
除了对 Person 中的属性进行审计外,一切都运行良好。在表attribute_alloc_aud 中,更改(例如删除一个属性并向一个人添加一个新属性)被正确跟踪,但总是用REVTYPE ADD 标记。例如:
- 转;人名;属性ID;REVTYPE
- 1个;1个;1个;0
- 1个;1个;2;0
- 2;1个;1个;0
- 2;1个;5个;0
- 3;1个;8个;0
结果是上一次修订中的被审计人具有属性 1、2、5 和 8。正确的只有 8!
怎么了?非常感谢!最好的祝福
列维