gpt4 book ai didi

java - Hibernate DB2 在使用 NativeQuery 时返回第一个字符 vector

转载 作者:行者123 更新时间:2023-12-02 19:34:29 24 4
gpt4 key购买 nike

我在使用 Hibernate Native Query 从 DB2 CHAR 字段获取数据时遇到以下问题。

我的表结构和数据如下。

 CNTRL_4 COLUMN_ID PARAM
------- --------- --------------------
1 1 10
1 2 12
1 3 true
2 1 10
2 2 13
2 3 false
3 1 10
3 2 16
3 3 true

CNTRL_4 和 COLUMN_ID 是数字,但 PARAM 是 CHAR(10)。如果我手动运行以下查询(从 Eclipse SQL 插件),它将获取正确的结果。

SELECT CNTRL_4, COLUMN_ID, VALUE AS PARAM FROM MY_TABLE_NAME 

但是,如果我使用 Java 代码(Hibernate Native Query)运行相同的查询,那么我将得到以下结果。

[{CNTRL_4=1, COLUMN_ID=1, PARAM=1}, 
{CNTRL_4=1, COLUMN_ID=2, PARAM=1},
{CNTRL_4=1, COLUMN_ID=3, PARAM=t},
{CNTRL_4=2, COLUMN_ID=1, PARAM=1},
{CNTRL_4=2, COLUMN_ID=2, PARAM=1},
{CNTRL_4=2, COLUMN_ID=3, PARAM=f},
{CNTRL_4=3, COLUMN_ID=1, PARAM=1},
{CNTRL_4=3, COLUMN_ID=2, PARAM=1},
{CNTRL_4=3, COLUMN_ID=3, PARAM=t}]

请查看PARAM数据,它只有第一个字符

我正在使用以下 Java 代码

String sql = "SELECT CNTRL_4, COLUMN_ID, VALUE AS PARAM FROM MY_TABLE_NAME";
SQLQuery query = hibernateUtil.getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> data = (List<Map<String, Object>>) query.list();
System.out.println(data);

我也在Google上搜索并找到了这个blog post ,这和我的问题一样。据我所知,我通过 SQL 查询类型转换解决了这个问题。但现在我忘记了我做了什么并且现在无法解决它。

请帮忙。

更新:通过类型转换解决了问题。请看我的回答。

最佳答案

通过类型转换我们可以解决如下问题

SELECT CNTRL_4, COLUMN_ID, RTRIM(CAST (VALUE AS VARCHAR(10))) AS PARAM FROM MY_TABLE_NAME 

说明:

Since VALUE column is defined as CHAR on DB2 and Hibernate is checking the type of the filed while using transformer Criteria.ALIAS_TO_ENTITY_MAP, then it is casting the data to Charecter. So it is returning the first character only.

但是在选择时,如果我们将类型更改为VARCHAR,那么我的问题就得到解决。

如果有任何缺点,请告诉我。

关于java - Hibernate DB2 在使用 NativeQuery 时返回第一个字符 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com