【问题标题】:Hibernate query.list() returning single char valueHibernate query.list() 返回单个字符值
【发布时间】:2017-02-06 14:17:27
【问题描述】:

我在 DB 中有一个列,它的类型是 char(20),我将该列映射如下

  <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);

【问题讨论】:

    标签: hibernate hibernate-mapping hibernate-criteria


    【解决方案1】:

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

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

    【讨论】:

    • 你用的是什么数据库?
    • 我使用的是 Oracle 10.1.3 DB
    【解决方案2】:

    在 Oracle SQL 中:

    CAST(My_column AS VARCHAR2(20))
    

    在休眠中:

    cast(my_cloumn as string)
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多