[Hibernate求助]如何構造自己的對映型別?
我在資料庫中儲存的欄位是TINYINT型別,想對映成java類中的Boolean(或者boolean)物件。我看了hibernate文件的4.2.4. Custom value types節,並自己寫了擴充套件了UserType類,如下:
還沒有測試,因為有一點疑問,這個類中,並沒有什麼方法表明資料庫中儲存的TINYINT值怎麼轉換成對應的Boolean物件,我自然是想資料庫中儲存1時轉換成TRUE,儲存0時轉換成FALSE。但在這個類中並沒有什麼方法申明啊。不知道如何解決這個問題。
另外,如果想把TINYINT列對映成java的原始型別boolean,又該如何解決。
想了很久,一直沒有弄出來,請大家幫忙看看,謝謝!
/** * 從java物件Boolean到sql中的TINYINT的對映 */ public class BooleanMappingType implements UserType { private static final int [] TYPE = {Types.TINYINT}; public int[] sqlTypes() { return TYPE; } public Class returnedClass() { return Boolean.class; } public boolean equals(Object x, Object y) throws net.sf.hibernate.HibernateException { if( x.equals(y) ) return true; if( x == y) return true; return false; } public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws net.sf.hibernate.HibernateException, java.sql.SQLException { Byte b = (Byte)Hibernate.BYTE.nullSafeGet(rs, names[0]); if( b == null) return Boolean.FALSE; if(b.intValue() != 0) return Boolean.TRUE; return Boolean.FALSE; } public void nullSafeSet(PreparedStatement psmt, Object value, int index) throws net.sf.hibernate.HibernateException, java.sql.SQLException { Boolean b = (value == null) ? Boolean.FALSE : (Boolean)value; Hibernate.BYTE.nullSafeSet(psmt, b, index); } public Object deepCopy(Object x) throws net.sf.hibernate.HibernateException { if(x.equals(Boolean.TRUE)) return new Boolean(true); if(x.equals(Boolean.FALSE)) return new Boolean(false); return null; } public boolean isMutable() { return true; } } <p class="indent"> |
還沒有測試,因為有一點疑問,這個類中,並沒有什麼方法表明資料庫中儲存的TINYINT值怎麼轉換成對應的Boolean物件,我自然是想資料庫中儲存1時轉換成TRUE,儲存0時轉換成FALSE。但在這個類中並沒有什麼方法申明啊。不知道如何解決這個問題。
另外,如果想把TINYINT列對映成java的原始型別boolean,又該如何解決。
想了很久,一直沒有弄出來,請大家幫忙看看,謝謝!
相關文章
- TypeScript 對映型別TypeScript型別
- TypeScript 之對映型別TypeScript型別
- Redis - 資料型別對映底層結構Redis資料型別
- Hibernate 的關聯關係對映
- Hibernate【對映】知識要點
- 搞懂 TypeScript 中的對映型別(Mapped Types)TypeScript型別APP
- Hibernate--單表對映總結
- Hibernate (開源物件關係對映框架)物件框架
- Hibernate配置檔案中對映元素詳解
- TypeScript 官方手冊翻譯計劃【十】:型別操控-對映型別TypeScript型別
- Hibernate中@Struct註解型別Struct型別
- SAP SEGW 事物碼裡的 ABAP 型別和 EDM 型別對映的一個具體例子型別
- 求助。。自己做的專案如何吸引到 HR
- 本地方法怎麼對映Java層的資料型別Java資料型別
- springboot~mybatis-plus中使用TypeHandler做型別對映Spring BootMyBatis型別
- java高階用法之:在JNA中使用型別對映Java型別
- 如何更快的找到自己所需的模型關聯型別?模型型別
- java高階用法之:JNA型別對映應該注意的問題Java型別
- Hibernate中實體類對映檔案表與表的關係模版
- 資料結構-對映資料結構
- 為什麼資料庫表的int型別欄位對映到實體類中要使用Integer型別,而不是int型別?...資料庫型別
- Linux埠對映是什麼?如何進行埠對映?Linux
- 將list型別對映到資料欄位 @TableField(typeHandler = StringListTypeHandler.class)型別
- 自己挖的坑自己填--Mybatis mapper檔案if標籤中number型別及String型別的坑MyBatisAPP型別
- 如何高效的處理陣列對映陣列
- 如何將csf ip 埠對映
- 如何修改Docker容器埠對映?Docker
- mybatis與hibernate的區別MyBatis
- 將搭建在樹莓派上的leanote用frp對映到自己的域名樹莓派FRP
- Docker(33)- 如何修改 docker 容器的埠對映Docker
- 微服務架構MapStruct屬性對映微服務架構Struct
- 型別的本質:對變數、型別、指標的理解型別變數指標
- 對映
- imtoken中如何進行EOS對映
- EntityFramework Core如何對映動態模型?Framework模型
- Oracle資料型別對應Java型別Oracle資料型別Java
- ElasticSearch中的對映Elasticsearch
- 教你如何修改執行中的容器埠對映
- Nginx配置靜態代理/靜態資源對映時root與alias的區別,帶字首對映用aliasNginx