2013-11-28 3 views
0

Я застрял в создании таблиц аудита. У меня есть два коллективных отношения «один ко многим». Один раз обратный, другой - нет. Аутентификация, связанная с аудитом, работает для немедленного высвобождения, но не для обратного.JPA Hibernate и AuditJoinTable

Мой код

@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; 

} 

Когда я создаю scema с помощью hibernate.hbm2ddl.auto "DEF" autdit таблица не создается. Однако создается сводный аудит «abc», и когда сбор сотрудников обновляется, записи аудита регистрируются.

Я использую Hibernate/Hibernate-Envers - 3.6.9.Final JPA 1.0

Все указатели оценили

ответ

0

Ok после того, как много копать еще не нашли способ, чтобы это заработало , Однако таблица аудита для объекта Address будет иметь столбец для отслеживания внешнего ключа для отдела. Я позволил

"hibernate.ejb.event.post-update"

Тогда любое удаление, обновление для коллекции будут отслеживаться и таблица аудита Адрес будет обновляться.