gpt4 book ai didi

java - 如何覆盖子类中的@annotations (javax.validation)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:15 26 4
gpt4 key购买 nike

我有这个实体,它是一个父类(super class):

@Entity
public class Father implements Serializable{

@Column(name = "name")
@Size(min=1, max=10)
@Pattern(regexp="^[A-Za-z ]*$")
@NotNull
private String name;

}

这个,扩展了上面的那个:

@Entity    
public class FatherSub extends Father implements Serializable{

private String name;

}

如您所见,在 FatherSub 中我没有 @Annotations 并且我不需要它们。我怎样才能覆盖它们?有办法吗?

好像注解@NotNull持久化在子类中,让我补Father.name(不是 FatherSub.name),如您在这 2 张 Eclipse 打印屏幕图片中所见。

enter image description here enter image description here

谢谢

最佳答案

Annotations 只是表示某个特定时间段的一些元信息,在有子类时不可重写。因此,如何实现注解继承取决于实现。对于 validator 框架,分散在多个继承类上的注释是 aggregated .

在您的示例中,FatherSub#name 成员隐藏 Father#name 成员。这意味着 FatherSub 的所有实例都将使用 FatherSub 中定义的 name。但是因为 Validation 实现也考虑了继承的注释,虽然 FatherSub#name 没有 @Column 注释,但会弹出错误。您无法更改此行为,因此您必须选择根本不使用继承或为子类而不是父类提供 validator 注释。

此外,您不需要在 FatherSub 中显式实现 Serializable,因为 Father 已经实现了它。

关于java - 如何覆盖子类中的@annotations (javax.validation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358948/

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