Java Hibernate中的小写注释

Java Hibernate中的小写注释,java,hibernate,jpa,Java,Hibernate,Jpa,在hibernate中有没有办法将实体的列注释为小写字符串?我是说,比如说 @Entity public class User { @Column private String username; } 我希望hibernate在所有未绑定到特定数据库的查询中将用户名转换为小写。例如,您可以在setter中进行转换: public void setUsername(String username) { this.username = username.to

在hibernate中有没有办法将实体的列注释为小写字符串?我是说,比如说

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

我希望hibernate在所有未绑定到特定数据库的查询中将用户名转换为小写。

例如,您可以在setter中进行转换:

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;
}
您可以在此处阅读有关拦截器的更多信息:

您可以为此字符串编写自己的
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;  
}