gpt4 book ai didi

spring - 带有@Audited 的基本模型

转载 作者:行者123 更新时间:2023-12-02 06:29:55 32 4
gpt4 key购买 nike

我将@Audited 注释用于我的基本模型。我将其扩展到我的所有实体。但它不起作用。有什么方法可以使用吗

这是我的基本模型

@MappedSuperclass
@Getter
@Setter
@Audited
public abstract class BaseModelObject implements Serializable {

/**
*
*/
private static final long serialVersionUID = 4194525198831057382L;


@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
protected Long id;
}

这是我的模型课
@Entity
public class City extends BaseModelObject {

private static final long serialVersionUID = 1L;

@Column
private String name;
}

最佳答案

@Audited注释不能按照您认为应该的方式工作。通过在父类(super class)上使用它,它对扩展它的子类没有影响,至少可以控制子类是否被审计。这是设计使然。

考虑一下我们有一个父类(super class)类型和两种不同实现的概念,一种是我们想用它的父类(super class)属性审计的,另一种是我们不想审计的。

@MappedSuperclass
@Audited
public class Animal {}

@Entity
@Audited
public class Cat extends Animal {}

@Entity
public class Dog extends Animal {}

在本例中,由于 @Audited不是继承的,只是将注释放在父类(super class)和 Cat实体结果只是 Cat被审计。 Dog实体及其父类(super class)属性值不是。

如果 @Audited被视为继承注释,我们必须引入一系列 @AuditOverride注释来完成相同的示例,请参见下文。
@MappedSuperclass
public class Animal {}

@Entity
@Audited
@AuditOverride(...)
public class Cat extends Animal {}

@Entity
public class Dog extends Animal {}

更糟糕的是,如果 Animal对其属性的子集进行了审计,这将影响 @AuditOverride 的数量s。

当您开始查看实体继承策略以及这些策略如何影响是否审计实体以及在层次结构的哪个级别上发挥作用时,这变得更加复杂。

有一个完整的讨论 HHH-6331HHH-9770 .

简而言之,如果您希望审核您的子类,则需要对它们进行显式注释。

关于spring - 带有@Audited 的基本模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41298391/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com