3
有沒有什麼方法可以在hibernate中註釋實體的字符串以小寫字母?我的意思是比如Hibernate中的小寫註釋
@Entity
public class User {
@Column
private String username;
}
我要休眠的用戶名在不依賴於特定數據庫的所有查詢爲小寫轉換。
有沒有什麼方法可以在hibernate中註釋實體的字符串以小寫字母?我的意思是比如Hibernate中的小寫註釋
@Entity
public class User {
@Column
private String username;
}
我要休眠的用戶名在不依賴於特定數據庫的所有查詢爲小寫轉換。
你可以寫您自己的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;
}
可以,例如,使其在二傳手:
public void setUsername(String username) {
this.username = username.toLowerCase();
}
或者使用interseptor:
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;
}
你可以閱讀更多關於intercepters這裏: http://www.mkyong.com/hibernate/hibernate-interceptor-example-audit-log/