2012-12-21 9 views
7

私は電子メールのコレクションプロパティを持つPersonエンティティを持っている:Embeddableエンティティプロパティの検証制約を適用するにはどうすればよいですか?

@Embeddable 
public class EmailU implements Serializable { 
    private String email; 

    public EmailU(){ 
    } 

    @Email 
    public String getEmail() { 
     return email; 
    } 
} 

しかし、それは動作しません:私のメールクラスで

@ElementCollection 
@CollectionTable(schema="u",name="emails",[email protected](name="person_fk")) 
@AttributeOverrides({ 
    @AttributeOverride(name="email",[email protected](name="email",nullable=false)), 
}) 
public List<EmailU> getEmails() { 
    return emails; 
} 

は、私は@emailで電子メールに注釈を付けることを試みました。私のアプローチはどうすればいいのですか?

答えて

12

コレクションプロパティに@Validアノテーションを追加します。これにより、検証プロバイダがコレクション内の各アイテムを検証し、@Emailバリデータを呼び出します。

@Valid 
@ElementCollection 
@CollectionTable(schema="u",name="emails",[email protected](name="person_fk")) 
@AttributeOverrides({ 
    @AttributeOverride(name="email",[email protected](name="email",nullable=false)), 
}) 
public List<EmailU> getEmails() { 
    return emails; 
} 

注釈ドキュメント:http://docs.oracle.com/javaee/6/api/javax/validation/Valid.html

関連する問題