Hibernate query.list()返回单个char值

时间:2017-02-06 14:17:28

标签: hibernate hibernate-mapping hibernate-criteria

我在DB中有一个列,其类型为char(20),我将列映射如下

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

我在db中有这个列的数据,如123456789123456789

当我执行Query.list()时,我只得到第一个char,即'1'

可能导致此问题的原因是什么?

我正在使用Hibernate 3.3

更新1:

我在执行Query.list()

之前执行下面的操作
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

2 个答案:

答案 0 :(得分:0)

可能存在HBM错误,该错误无法在整个框架中一致地解析char(20)数据类型。要明确,请尝试使用此映射:

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

答案 1 :(得分:0)

在Oracle SQL中:

CAST(My_column AS VARCHAR2(20))

在Hibernate中:

cast(my_cloumn as string)
  

如果底层数据库支持ANSI cast()和extract()

因为您使用的是Oracle,所以这是真的。我尝试使用带有CHAR(20)的CAST,它不能解决问题所以你必须使用VARCHAR2。我的情况是使用Oracle SQL,所以我无法测试我给出的Hibernate示例,但是你明白了。

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