Je suis en train d'enregistrer les valeurs des colonnes se joindre dans les tableaux de contrôle de la vérification effectuée pas la table de jointure.mise en veille prolongée-OneToMany Envers Rejoindre la classe non audités, mais les colonnes de jointure doivent être vérifiés
Voici mes classes d'entités.
Audited Classe INFO:
@Entity
@Audited
@Table(name = "INFO")
public class Info extends AbstractEntity {
@Id
@Column(name = "ID")
private String id;
/*More Columns */
@ManyToOne
@JoinColumns({ @JoinColumn(name = "FIRST_NAME", referencedColumnName = "FIRST_NAME"),
@JoinColumn(name = "LAST_NAME", referencedColumnName = "LAST_NAME") })
@NotAudited
private Details details;
}
Classe non auditées: Détails:
@Entity
@Table(name = "DETAILS")
public class Details extends AbstractEntity {
@EmbeddedId
private DetailsPK detailsPK;
/*More Columns */
}
champs de clé primaire/inscription sont définies ici:
@Embeddable
public class DetailsPK implements Serializable {
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
}
Ici, les informations Détails est statique ... Cela ne change pas ... D'où, besoin d'être audité .... Mais, lors de la vérification des changements INFO, je wan t la table INFO_AUD pour capturer à la fois le prénom et le nom de famille ... Y at-il un moyen de le spécifier?
Merci, Joe.
Naros, Merci pour votre aide ... J'ai essayé la solution ci-dessus ... Mais le prénom et le nom de famille dans les tables d'audit ne sont toujours pas remplis ... Aussi, mon hypothèse était que dans votre code .. La méthode details.getId() est la méthode details.getDetailsPK(). J'ai ajouté des getters et des setters aux colonnes fantômes de l'entité INFO. S'il vous plaît conseiller ... Pouvez-vous aussi, s'il vous plaît expliquer pourquoi nous avons besoin de la méthode resolveAuditedShadowColumns dans les détails setter ... J'excuse à l'avance, car je suis complètement nouveau pour essayer de et envers comprendre que ... – Joe
@Joe j'ai complètement réécrit la réponse. Ma réponse précédente était un peu compliquée et après avoir fait quelques expériences; J'ai trouvé une meilleure solution qui s'adapte très bien à vos besoins et évite les frais inutiles. Je – Naros
essayé de faire cela avant que je posté ma question et ça n'a pas marché ... Je retenté juste au cas où ... et il ne fonctionne toujours pas .... Ce qui suit est les lignes de code que j'ai essayé. @ManyToOne @JoinColumns ({@JoinColumn (name = "prenom", referencedColumnName = "prenom"), @JoinColumn (name = "LAST_NAME", referencedColumnName = "LAST_NAME")}) @Audited (targetAuditMode = RelationTargetAuditMode .NOT_AUDITED) private Détails detailles; Remarque: Ma table Info_Aud contient les colonnes FIRST_NAME et LAST_NAME mais pas details_First_name et details_last_name columsn. – Joe