2013-11-28 92 views
0

我一直在创建审计表。我有两个集合的一对多关系。一旦相反,另一个不是。可审计加入注释适用于非反向释放,但不适用于反向释放。不产生JPA休眠和审计加入表

我的代码

@Entity 
@Audited 
@AuditTable(value = "DDD") 
public class Department { 
    @Id 
    @GeneratedValue(strategy= GenerationType.IDENTITY) 
    @Audited 
    private int id; 
    private int age; 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 
    private String name; 

    @OneToMany(targetEntity = Professor.class,cascade = CascadeType.ALL) 
    @JoinColumn(name = "dept_id") 
    @AuditJoinTable(name = "abc") 
    private java.util.Collection<Professor> employees; 

    @OneToMany(targetEntity = Address.class, mappedBy = "department")<==inverse relation 
    @AuditJoinTable(name = "def") 
//I tried commenting this out and let the inverse side AuditJoinTable annotation, no luck 
    private java.util.Collection<Address> addresses; 
//Getters and setters remove to reduce clutter 
} 

地址

@Entity 
    @Audited 
    public class Address { 
     @Id 
     @GeneratedValue(strategy= GenerationType.IDENTITY) 
     private int id; 
     @Column 
     private String name; 

     @ManyToOne(cascade = CascadeType.ALL) 
     @AuditJoinTable(name = "def") 
     private Department department; 

教授

@Entity 
@Audited 
public class Professor { 
    @Id 
    @GeneratedValue(strategy= GenerationType.IDENTITY) 
    private int id; 
    @Column 
    private String name; 
    private long salary; 

    @ManyToOne 
    @JoinColumn(name = "dept_id") 
    private Department department; 

} 

当我创建使用hibernate.hbm2ddl.auto “高清” autdit表scema。但是,会生成“abc”审计联接表,并且在更新雇员集合时会记录审计条目。

我使用 休眠/休眠-envers - 3.6.9.Final JPA 1.0

任何指针赞赏

回答

0

好了很多挖仍然没有找到一个方法后得到它的工作。但是,Address实体的审计表将具有一个列来跟踪Department的外键。我启用了

"hibernate.ejb.event.post-update"

那么任何去除,对于集合类的更新将被跟踪和地址审计表将被更新。