Java 使用Envers是否可以对具有公共映射基类的不同具体派生类使用不同的审核模式?

Java 使用Envers是否可以对具有公共映射基类的不同具体派生类使用不同的审核模式?,java,hibernate,jpa,hibernate-envers,Java,Hibernate,Jpa,Hibernate Envers,我有两个具有相同字段的JPA实体,我想将它们存储在不同的表中。因此,我将它们基于抽象的公共映射基类,以避免代码加倍。现在我希望其中一个表被审计,另一个不被审计。但是当我将one类设置为audited时,Envers会为这两个派生类创建一个_AUD表。 即使将另一个派生类设置为审核模式NotAudited,也会创建其审核表。 是否有可能按照说明对其进行配置 我的(简化)课程: targetAuditMode只能用于具有关系的字段。如果您不想审核实体,只需删除注释。您的AbstractPrice不是

我有两个具有相同字段的JPA实体,我想将它们存储在不同的表中。因此,我将它们基于抽象的公共映射基类,以避免代码加倍。现在我希望其中一个表被审计,另一个不被审计。但是当我将one类设置为audited时,Envers会为这两个派生类创建一个_AUD表。 即使将另一个派生类设置为审核模式NotAudited,也会创建其审核表。 是否有可能按照说明对其进行配置

我的(简化)课程:


targetAuditMode
只能用于具有关系的字段。如果您不想审核实体,只需删除注释。

您的
AbstractPrice
不是实体,它应该是
MappedSuperClass
。谢谢;我已经改正了。但部分问题仍然存在:当我将其中一个派生类设置为“已审核”时,另一个派生类也会被审核,即使我禁止这样做。
targetAuditMode
应仅用于包含关系的字段。如果不希望审核实体,只需删除注释即可。当您只有一个注释时,
Price
OriginalPrice
是否仍有审计表?您使用的是哪个版本的Hibernate?@adamw:谢谢,这就解决了问题。我没有发现任何提及审计模式仅适用于字段的事实。当我完全删除注释时,不再创建_aud表。您想将此作为答案陈述,以便我可以接受吗?很高兴听到它起作用-添加了一个答案:)
@MappedBaseClass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class AbstractPrice {
    // some fields and some methods
}

@Entity
@Audited(targetAuditMode=RelationTargetAuditMode.AUDITED)
public class Price extends AbstractPrice {
}

@Entity
@Audited(targetAuditMode=RelationTargetAuditMode.NOT_AUDITED)
public class OriginalPrice extends AbstractPrice {
}