2012-05-23 49 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