2010-07-24 23 views
0

i ont les deux classes Personne et ATTRIBUT, bref:@ManyToMany: RevType est seulement ADD

@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... 
} 

Pour ces classes les personnes tables db, attributs, attribute_alloc, persons_aud, attributes_aud et attribute_alloc_aud ont été générés correctement.

Tout fonctionne bien sauf l'audit pour les attributs en personne. Dans la table attribute_alloc_aud, les changements (par exemple supprimer un attribut et en ajouter un nouveau à une personne) sont suivis correctement, mais toujours marqués avec le REVTYPE ADD. Par exemple:

  • REV; person_id; attribut_id; REVTYPE
  • 1; 1; 1;
  • 1; 1; 2;
  • 2; 1; 1;
  • 2; 1; 5;
  • 3; 1; 8;

conséquence est que la personne auditée dans la dernière révision a les attributs 1, 2, 5 et 8. correcte serait seulement 8!

Qu'est-ce qui ne va pas? Merci beaucoup! Meilleures salutations

Levi

Répondre

0

Cela peut être probablement lorsque vous mettez à jour la collection ManyToMany vous pouvez être déblayer la collecte et l'ajout de la nouvelle collection.

+0

Merci! C'était un indice très utile! – Levis