各プロパティのset()メソッドでHibernateにフィールド長の制約を検証させる簡単な方法はありますか?
後で例外が発生するのを待つのではなく、フィールドに無効な値が含まれるのを防ぎたい。
Usernameプロパティを持つクラスがあります:
@Column(name = "username", length = 12)
public String getUsername()
{
return this.username;
}
public void setUsername(String username)
{
this.username = username;
}
Hibernateテンプレートを変更して、次のようにset()メソッドを作成できます。
@Column(name = "username", length = 12)
public String getUsername()
{
return this.username;
}
public void setUsername(String username)
{
Method m = ClassWithUsername.getDeclaredMethod("setUsername");
javax.persistence.Column col = m.getAnnotation(javax.persistence.Column.class);
int maxLen = col.length();
// Validate the field length
if(username!=null && username.length() > maxLen)
throw Exception("Username must be no more than " + maxLen + " characters.");
this.username = username;
}
これを行う前に、他のアプローチがあるかどうか疑問に思っています。