2012-05-23 45 views
0

有一个@MappedSuperClass SomeClass(参见下面的一个简单例子),是否可以通过@AttributeOverride覆盖在SomeOtherclass延伸SomeClass休眠:通过@AttributeOverride覆盖@Pattern

@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

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

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

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

看到这个somewhat related answer