在 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