4

エンティティの列に小文字の文字列に注釈を付けるための休止状態の方法はありますか?たとえば

@Entity  
public class User {  
    @Column  
    private String username;  
}

特定のデータベースに関連付けられていないすべてのクエリで、休止状態でユーザー名を小文字に変換する必要があります。

4

2 に答える 2

5

たとえば、セッターで作成できます。

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/を参照してください。

于 2012-10-28T12:20:35.613 に答える
4

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;  
}
于 2012-10-28T13:27:07.610 に答える