[英]Hibernate generates wrong insert statement for DB2
我正在将休眠与DB2数据库一起使用。 当我运行春季批处理作业时,我有以下异常:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [insert into "PERSON" (id, first_name, last_name) values (default, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement
当我从日志中将查询粘贴到IBM Data Studio时,我看到该查询似乎缺少字段名称的引号。 有效语句为
insert into "PERSON" ("id", "first_name", "last_name") values (default, 'John122', 'Doe21')
我怎样才能解决这个问题?
谢谢
以下两个语句之间有区别:
create table Person ( id integer, first_name vargraphic(80), last_name vargraphic(80) );
和
create table "Person" ( "id" integer, "first_name" vargraphic(80), "last_name" vargraphic(80) );
第一条语句创建表PERSON,其表列ID为FIRST_NAME和LAST_NAME(请注意大写!)。 第二条语句创建具有列id,first_name和last_name的表Person。
似乎您使用第二个定义创建了表,但是正在尝试使用对第一个表定义正确的语句来更新它。
TL; DR:DB2始终以大写形式创建所有表名和列名,除非名称在(双引号)之间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.