Ich habe ein verknüpftes Vererbungsmapping mit Diskriminatorspalte.Hibernate Envers erzeugt einen falschen Wert für den Diskriminatorwert im Falle einer verknüpften Vererbung mit der Diskriminatorspalte
Geordnete Einheit:
@Entity
@Audited
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type")
public abstract class ParentEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(insertable = false, updatable = false)
private String type;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Kinder Einheit:
@Audited
@Entity
@DiscriminatorValue("child_1")
public class ChildEntity extends ParentEntity {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Wenn ich versuche, envers ChildEntity wintern zu beharren erzeugt eine falsche Abfrage, die plus ‚_AUD‘ für Scheidungs Säule vollständig qualifizierten Namen des Kindes Klasse enthält Hier ist ein Beispiel:
insert
into
parent_entity_aud
(revtype, type, id, rev)
values
(?, 'io.samples.data.jpa.domain.ChildEntity_AUD', ?, ?)
Beachten Sie, dass v Wert für den Typ ist 'io.samples.data.jpa.domain.ChildEntity_AUD' anstelle von 'child_1'.
Eine andere Beobachtung ist, wenn ich @DicriminatorColumn von der übergeordneten Entität und @DiscriminatorValue von der untergeordneten Entität entfernt, dann funktioniert es.
Weiß jemand, wie man dieses Problem löst?
P.S. Ich verwende Hibernate 5.0.9.Final.
Als Follow-up ist dies in Hibernate 5.2.3.Final behoben. – Naros