Hibernate:通过@AttributeOverride覆盖@Pattern

时间:2012-05-23 15:25:37

标签: java hibernate

拥有@MappedSuperClass SomeClass(请参见下面的最小示例),是否可以在@Pattern @AttributeOverride中覆盖SomeOtherclass SomeClass

@MappedSuperClass
public abstract class SomeClass {

@Column(name = "NAME", length = 255, unique = false, nullable = true)
@Pattern(regex = "([a-zA-Z0-9]+_)*([a-zA-Z0-9]+)")
        private String name;
    …
}



@AttributeOverride(name = "name", column = @Column(name = "NAME", length = 20, unique = false, nullable = false))
public class SomeOtherClass extends SomeClass {

    ….

}

或者还有其他方法可以为继承的类定义新的@Pattern吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的。 @AttributeOverride和@Pattern注释不是同一规范的一部分。

@AttributeOverride 是JPA规范的一部分,允许您覆盖实体子类中属性的列定义。

@Pattern 是bean验证(JSR 303)规范的一部分,允许您指定正则表达式以匹配带注释的成员。您不能覆盖@Pattern注释,但是您可以在子类中累积应用新模式,假设您要注释方法而不是字段。

请参阅此somewhat related answer