在 Hibernate 中为 Informix 数据库中的列进行类型转换

Posted

技术标签:

【中文标题】在 Hibernate 中为 Informix 数据库中的列进行类型转换【英文标题】:Type casting in Hibernate for column in Informix database 【发布时间】:2010-11-01 19:23:42 【问题描述】:

我将 Informix 用于 OR 数据库,并在我的应用程序后端使用 Spring + Hibernate。 问题是,我在 String 变量中创建了在数据库表中插入数据的查询。在这个查询字符串中,我对某些列使用了类型转换(如下所示:..ROW(street,city,country)::addressT.. 其中 addressT 是我在数据库中创建的类型)。

这里的问题在于 Hibernates createSQLQuery(String query) 方法。当我将查询字符串传递给它时,它会自动在该字符串中搜索命名参数(:namedParameter - 所以“冒号”符号和参数名称)并尝试用某些东西替换它。 结果是这样的查询:...ROW(street,city,country)?...

有什么方法可以禁用休眠自动命名参数替换,或者有没有其他方法可以将本机查询转发到我的 Informix 数据库?

【问题讨论】:

好的,我找到了一种解决方法......在informix数据库中,我创建了一个构造ROW的cast_addresst(a1 varchar(30),a2 varchar(30),a3 varchar(30)) 函数,强制转换它到我的类型并返回它,在Java代码中我只是在字符串查询中调用这个函数。也许有人会觉得它很有用.. 【参考方案1】:

您也许可以使用CAST(<expression> AS <type>) 表示法。

注意其他系统坚持认为“db@server:owner.table”或“DATETIME(12:13:14) YEAR TO SECOND”包含占位符,而不是合法的 Informix 句法结构。

【讨论】:

以上是关于在 Hibernate 中为 Informix 数据库中的列进行类型转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中为 PHP 7 安装 PDO 驱动程序 Informix

Informix 数据库中的 Hibernate 批量插入(获取 sql 日志跟踪)

Hibernate/JDBC 为 Informix 数据库生成错误的 SQL

“发现:smallint,预期:整数” Hibernate 对 informix 数据库的验证短时间失败

如何在hibernate中为count(*)编写查询

informix 数据库的分页