在使用鉴别器列连接继承的情况下,Hibernate Envers 为鉴别器值生成错误的值
Hibernate Envers generates wrong value for discriminator value in case of joined inheritance with discriminator column
我有一个带有鉴别器列的联合继承映射。
Parent实体:
@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;
}
}
Child实体:
@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 hibernate envers 生成不正确的查询,其中包含 child class 的完全限定名称加上鉴别器列的“_AUD”,这是一个示例:
insert
into
parent_entity_aud
(revtype, type, id, rev)
values
(?, 'io.samples.data.jpa.domain.ChildEntity_AUD', ?, ?)
请注意,type 的值为 'io.samples.data.jpa.domain.ChildEntity_AUD' 而不是 'child_1'.
另一个观察结果是,如果我从 parent 实体中删除 @DicriminatorColumn 并从 child 实体中删除 @DiscriminatorValue 则它会起作用。
有人知道如何解决这个问题吗?
P.S。我正在使用休眠 5.0.9.Final.
这似乎是 Hibernate 5.x 与 Hibernate 4.3.11.Final 观察到的行为的回归问题。我已经记录了一个 jira 问题 HHH-11133 注意到这个行为问题。
我有一个带有鉴别器列的联合继承映射。
Parent实体:
@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;
}
}
Child实体:
@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 hibernate envers 生成不正确的查询,其中包含 child class 的完全限定名称加上鉴别器列的“_AUD”,这是一个示例:
insert
into
parent_entity_aud
(revtype, type, id, rev)
values
(?, 'io.samples.data.jpa.domain.ChildEntity_AUD', ?, ?)
请注意,type 的值为 'io.samples.data.jpa.domain.ChildEntity_AUD' 而不是 'child_1'.
另一个观察结果是,如果我从 parent 实体中删除 @DicriminatorColumn 并从 child 实体中删除 @DiscriminatorValue 则它会起作用。
有人知道如何解决这个问题吗?
P.S。我正在使用休眠 5.0.9.Final.
这似乎是 Hibernate 5.x 与 Hibernate 4.3.11.Final 观察到的行为的回归问题。我已经记录了一个 jira 问题 HHH-11133 注意到这个行为问题。