我的表的列爲char(5),無法將其更改爲varchar(5)。所以當我使用hibernateTemplate從表中取出數值時,它會返回帶有實際單一字母表值的空格(客戶定義是使用.trim()方法檢查NPE),但是我們是否提供了處理這種類型的方法的情況。 PS.I使用Spring支持hibernate dao支持。 (在SQL中,CHAR數據類型是一個固定長度的字符串,根據定義,其他字符用空格填充)如何使用休眠和舊數據庫修剪字段pojo中的空格
1
A
回答
0
建議的解決方案我覺得添加的用戶類型最好的套房的要求提到的討論和更有意義,因爲 1. @PostLoad(或實際生命週期方法)做不能與使用SessionFactory和Hibernate一起工作。 2.代碼重寫器中的修改可能會被忽略,而另一個開發人員可能會忽略可能導致重寫該setter的setter。
所以我正在使用以下解決方案。 1.有一個package-info.java: - 它具有正在使用的typedefs的詳細信息。 2.Annotated與@Type(類型= 「MyTrimTypeString」) 3.Defined用戶類型的類MyTrimTypeString,Code for which followed reply by StepherSwensen字段與nullSafeGet輕微更新看起來像
@Override
public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException
{
final String val = rs.getString(names[0]);
return (val == null ? val : val.trim());
}
和nullSafeSet看起來像:
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException
{
final String val = (String)value;
st.setString(index, val);
}
1
避免顯式調用trim()的一種方法是可以提供使用生命週期方法一個@PostLoad
註釋你的Enitity。 如:
@PostLoad
protected void trim(){
if(stringAttr!=null){
stringAttr=stringAttr.trim();
}
}
相關問題
- 1. 如何修剪具有多個空格的數據庫數據?
- 2. 休眠使用普通POJO
- 3. 如何使用休眠pojo文件重新創建我的數據庫
- 4. 修剪表格字段數據
- 5. 修剪逗號和空格從數字
- 6. 選擇休眠空字段
- 7. 休眠和數據庫
- 8. 休眠和數據倉庫
- 9. 如何使用jsp中的參數修剪url中的空格?
- 10. Mysql:如何修剪和比較數據庫字段與字母數字值?
- 11. 如何將json對象存儲到休眠數據庫字段
- 12. 如何從數據庫中使用休眠獲取數據,jpa
- 13. 休眠類Pojo類
- 14. 數據庫+休眠
- 15. Vert.x使用BLOB和休眠從數據庫中獲取數據
- 16. 休眠數據庫與休眠
- 17. 如何檢查是否使用表格中存在數據休眠使用我的JSP頁面和MySQL休眠
- 18. 數據庫字段中的空格
- 19. 休眠應該只更新數據庫中的某些字段
- 20. 問題與休眠3和數據庫中的空值
- 21. 如何使用休眠存儲數據庫中的文件
- 22. 如何從數據庫使用休眠模板獲取數據
- 23. 修剪所有數據集字段中的空白
- 24. 使用多個數據庫休眠
- 25. 修剪unicode字符串中的空格
- 26. 如何使用休眠功能在數據庫中交換ID
- 27. 如何在數據庫中插入'使用休眠
- 28. 如何使用休眠選擇數據?
- 29. 在休眠狀態下手動計算的字段POJO
- 30. 修剪左空間數據庫
它非常像提供setter方法。這是沒有錯的,但尋找一些通用的解決方案 – Sankalp
如果將此操作移動到setters/getters,則此檢查將在初始加載時以及隨後每次調用方法時發生。在此方法中,僅在初始加載時執行此操作。 – Rohit
@PostLoad永遠不會在使用會話工廠使用休眠方式的地方調用。請參閱[鏈接](http://stackoverflow.com/questions/2802676/hibernate-postload-never-gets-invoked) – Sankalp