2017-03-24 2 views
1

Ich verwende derzeit Hibernate & Envers Version 5.2.9.Final. Ich möchte @ElementCollection mit einem benutzerdefinierten Tabellenname für die Sammlung und die Audit-Tabelle verwenden.Wie Anpassen von Hibernate @ElementCollection envers Audit Tabellenname?

Was ich bisher weiß, ist, dass Standard-Tabellennamen Modifizieren einer Vielzahl von Anmerkungen hat, mit zu arbeiten: Für die Unternehmen selbst gibt es die Anmerkungen @Table und @SecondaryTable sowie die entsprechenden envers Anmerkungen @AuditTable und @SecondaryAuditTable. Zum Ändern des Tabellennamens einer Elementsammlung gibt es die Annotation @CollectionTable. Ich konnte bisher noch keine entsprechende envers-Annotation finden. Also meine Frage ist:

Wie kann ich den Namen für eine Hibernate @ElementCollection Envers Audit-Tabelle ändern?


Zusatzinfo

Im hibernate envers ticket which tracks the adding of auditing support für Element Sammlungen wurde die gleiche Frage im Jahr 2013 fragt zurück, aber nicht beantwortet.

Ein Code-Schnipsel zu meinem Setup deutlich zu machen:

@Entity 
@Table(name = "\"user\"") 
@SecondaryTable(name = "\"user_secondary\"") 
@Audited 
@AuditTable("\"user_audit\"") 
@SecondaryAuditTable(secondaryTableName = "user_secondary", 
     secondaryAuditTableName = "\"user_secondary_audit\"") 
public class User { 

    // ... stuff like id and other fields ... 

    @ElementCollection 
    @CollectionTable(name = "\"user_references\"") 
    private Map<String, Long> references = new HashMap<>(); 
    // TODO FIXME how to get a custom name for the audit table? 

    // ... more stuff like getters and setters 
} 

Hibernate generiert alle Tabellen, wie beabsichtigt, noch die collecction Audit-Tabelle wird dem Namen 'user_references_AUD' während würde ich wie das bekommen Name 'user_references_audit' wie für die anderen Tabellen.

Ich bin auch bewusst die globalen Einstellungen beeinflussen die Audit-Tabelle Präfix oder Suffix, aber das ist nur ein letzter Ausweg für meinen Anwendungsfall.


aktualisieren

Wie schlug ich einen feature request hinzugefügt JIRA Hibernate.

Antwort

0

Das ist, weil Envers keine Ergänzung für @CollectionTable hat.

Sie können gerne eine JIRA hinzufügen mit der Bitte, dass wir eine ergänzende Annotation hinzufügen und ich kann mir ansehen, was benötigt wird, um die Funktionalität hinzuzufügen. Nur auf einen Blick sollte es nicht zu viel erfordern, da es nur in den generierten Envers-Entitätstabellenname für das mittlere Entitätselement einspeisen muss.

+0

Vielen Dank für Ihre Antwort und das Angebot! Ich wollte das sowieso machen, aber zuerst musste ich mich registrieren. Also hier ist die Feature-Anfrage: https://hibernate.atlassian.net/browse/HHH-11595 – l00tr

Verwandte Themen