2017-02-06 42 views
0

我在DB一列,它是類型char(20)和I映射到的列如下休眠query.list()返回單個字符值

<property name="my_cloumn" type="string"> 
     <column name="My_column" sql-type="char(20)"> 
     </column> 
    </property> 

我對這個列中的數據DB像123456789123456789

當我執行Query.list(),我得到第一個字符,即只有「1」

什麼可能導致的問題?

我使用Hibernate 3.3

更新1:

我執行Query.list()前執行下面

query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); 

回答

0

有可能是一個錯誤的HBM存在是不正常整個框架內一致地解析數據類型爲char(20)。要明確的,試試這個映射來代替:

<property name="my_cloumn" type="string"> 
    <column name="My_column" sql-type="char" length="20" /> 
</property> 
+0

謝謝你,我會嘗試和更新 – Raj

+0

仍爲其您正在使用什麼數據庫不工作 – Raj

+0

? – Naros

0

在Oracle SQL:

CAST(My_column AS VARCHAR2(20)) 

在Hibernate:

cast(my_cloumn as string) 

如果ANSI CAST()並解壓()支持由底層數據庫

因爲您使用的是Oracle,所以這是真實的。我嘗試使用CHAR(20)不能解決問題的CAST,因此您必須使用VARCHAR2。我的情況是使用Oracle SQL,因此我無法測試我給出的Hibernate示例,但您明白了。

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/queryhql.html#queryhql-expressions