首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javax.validation中覆盖@注释( subClass )

如何在javax.validation中覆盖@注释( subClass )
EN

Stack Overflow用户
提问于 2015-12-18 15:30:45
回答 1查看 4.3K关注 0票数 7

我有一个Entity,它是一个超类:

代码语言:javascript
复制
@Entity
public class Father implements Serializable{    

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

}

这一个扩展了上面的一个:

代码语言:javascript
复制
@Entity    
public class FatherSub extends Father implements Serializable{  

    private String name;

}

如您所见,在FatherSub中,我没有@Annotations,我也不想要它们。我怎么能推翻他们?有办法吗?

似乎注释@NotNull仍然存在于子类中,并要求我填充Father.name (而不是FatherSub.name),就像您在这2个Eclipse图片中看到的那样。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 15:37:06

注释只是表示某一特定时期的一些元信息,在拥有子类时是不能过写的。因此,这取决于实现如何实现注释继承。对于Validator,分散在多个继承类上的注释是聚类

在您的示例中,FatherSub#name成员隐藏Father#name成员。这意味着FatherSub的所有实例都将与在FatherSub中定义的name一起工作。但是,由于验证实现也考虑到了继承的注释,尽管FatherSub#name没有@Column注释,因此会弹出错误。您不能改变这种行为,所以您必须选择不使用继承,或者给子类提供验证器注释,而不是父类。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34358948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档