Discriminatorカラムを使用して継承マッピングを結合しました。Hibernate Enversは、ディスクリミネータカラムで継承された継承の場合に、ディスクリミネータ値に誤った値を生成します。
親エンティティ:
@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;
}
}
子エンティティ:
@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;
}
}
私はChildEntityがenversを休止持続しようとする完全修飾子クラスの名前と識別カラムのための「_AUD」を含む不正なクエリを生成し、ここに例があります:
insert
into
parent_entity_aud
(revtype, type, id, rev)
values
(?, 'io.samples.data.jpa.domain.ChildEntity_AUD', ?, ?)
注意してくださいタイプの値は'io.samples.data.jpa.domain.ChildEntity_AUD' の代わりに 'child_1'です。
もう1つは@DicriminatorColumnを親エンティティから削除し、@DiscriminatorValueを子エンティティから削除する場合です。
誰もこの問題を解決する方法を知っていますか?
P.S.私は、ハイバネート5.0.9を使用しています。
フォローアップとして、これはHibernate 5.2.3.Finalで修正されています。 – Naros