今天,想尝试下使用hsql的sequence来作为hibernate的主键生成策略,主键部分XML代码是这样的:
<id name="id" column="person_id"> <generator class="sequence"> <param name="sequence">seq</param> </generator></id>
?其中,seq是sequence的名称,如果直接这样用的话,hibernate会报异常,其中最重要的一句话是:select next value for seq from dual_seq。这句SQL是hibernate取得sequence值的sql。但是,在当前数据库中根本就没有这个表,于是,只有手工建表了:
create table dual_seq ( id bigint);
接着需要插入一条数据 insert into dual_seq(id) values(0);?
然后,用select next value for seq from dual_seq在hsql的database manager中查询,sequence的值查出来了。
最后,在运行刚才的插入的person的代码,ok,工作了。解决方法,贴出来共同进步。
?