エンティティの列に小文字の文字列に注釈を付けるための休止状態の方法はありますか?たとえば
@Entity
public class User {
@Column
private String username;
}
特定のデータベースに関連付けられていないすべてのクエリで、休止状態でユーザー名を小文字に変換する必要があります。
たとえば、セッターで作成できます。
public void setUsername(String username) {
this.username = username.toLowerCase();
}
または、インターセプターを使用します。
public boolean onSave(Object entity,Serializable id, Object[] state,String[] propertyNames,Type[] types) throws CallbackException {
if (entity instanceof User ){
entity.username = usename.toLowerCase();
}
return false;
}
インターセプターの詳細については、 http ://www.mkyong.com/hibernate/hibernate-interceptor-example-audit-log/を参照してください。
UserType
あなたはこの文字列のためにあなた自身を書くことができます
public class LowerCaseString implements UserType
{
//....
public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index)
throws HibernateException, SQLException {
Hibernate.STRING.nullSafeSet(preparedStatement,
(value != null) ? ((String)value).toLowerCase() : null, index);
}
///....
}
あなたの実体
@Entity
public class User {
@Column
@Type(type="com.youcompany.LowerCaseString")
private String username;
}