Java Hibernate在执行insert/update时创建无效语句
我正在对现有系统进行一些更新和修复。该应用程序设计为使用Spring3和Hibernate3Java Hibernate在执行insert/update时创建无效语句,java,spring,hibernate,spring-data,informix,Java,Spring,Hibernate,Spring Data,Informix,我正在对现有系统进行一些更新和修复。该应用程序设计为使用Spring3和Hibernate3 应用程序在对表进行插入/更新时失败;它使用spring-hibernate模板 getHibernateTemplate().saveOrUpdate(object); getHibernateTemplate().flush(); 表格结构: create table user_offer ( user_id INT, --FK offer_cd CHAR(4
应用程序在对表进行插入/更新时失败;它使用spring-hibernate模板
getHibernateTemplate().saveOrUpdate(object);
getHibernateTemplate().flush();
表格结构:
create table user_offer (
user_id INT, --FK
offer_cd CHAR(4), --FK
offer_ts TIMESTAMP,
offer_promo_cd SMALLINT, --FK
offer_end_dt DATE,
offer_by_cd CHAR(10),
updated_dt DATE
)
它有简单的hibernate映射文件、PK的复合id和FKs的基本多对一关系。我通过打开true
进行了快速调试。为insert生成的sql只是随机的:
查询:在表中插入用户报价(按cd报价、报价ts、更新的报价、报价cd、报价促销cd、报价结束日期、用户id)值(?,,,,,,,)
我使用示例值创建了查询,并尝试在数据库中手动插入。查询失败,出现相同的异常,该异常试图在整数列或类似类型转换中插入字符串值
这段代码运行得很好,我们没有对这部分代码做任何更改 请展示您的地图问题将是如何为7个占位符
?
问号提供值。列的顺序并不明显;它既不是字母顺序,也不是定义顺序。因此,问题变成了“占位符的值是如何提供的”,因为其中一个代码(提供代码或按代码提供)似乎是在需要数字值的地方提供的。我不知道会发生什么变化来把它炸掉。我知道Informix的SQL,但我不知道Hibernate/Spring设置中会发生什么变化。尽管如此,这并不是Informix中的标准类型——尽管您当然可以使用创建时间戳的近似值,创建不同类型的时间戳作为DATETIME YEAR to SECOND
(或者选择分数(n)作为秒内固定数量的小数位数)。请参阅手册中的。