【发布时间】:2012-06-05 11:18:19
【问题描述】:
我有一个包含四列的“组”表。数据库是 postgres,group_id 列是 Serial。所以实际上它是一个 Integer,默认获取下一个值。
我有一个需要使用@SQLInsert 的用例(不能使用普通的persist 方法),但我无法使用默认值。这是我所拥有的:
@SQLInsert(sql="INSERT INTO groups (group_id, parent_id, group_name, version) VALUES (DEFAULT,?,?,?)")
我将实体属性设置为 group_id 和 version 为 null 且其他两个已正确填充的值。 group_id 在数据库中不能为空,版本可以为空。
我得到了这个例外:
WARNING: SQL Error: 0, SQLState: 22023
SEVERE: The column index is out of range: 4, number of columns: 3.
SEVERE: Could not synchronize database state with session
如果我直接在数据库上输入以下 DML,它就可以工作:
INSERT INTO groups (group_id, parent_id, group_name, version) VALUES (DEFAULT, 3, 'abcd', null);
有没有什么方法可以使用@SQLInsert 实现同样的事情。
【问题讨论】:
-
您要为版本等保存哪些类型的变量?
-
版本是长的。这确实适用于直接查询......即在数据库上完成,而不是通过 ORM。
标签: java hibernate default sql-insert