>>hibernate只会创建一个sequence,而不能为每个表建一个

谁说的?怎么不可以?

>>所以我觉得最好能默认为所有表建单独的sequence比较合适

当然可以了

汗,
我在4.1.4.1. generator没有找到这个配置
increment
identity
sequence
hilo
seqhilo
uuid.hex
uuid.string
native
assigned
foreign
首先排除
assigned
foreign
〉〉我的程序象多兼容几个数据库,而且编号还是有一点意义,
排除
identity
sequence
hilo
seqhilo
uuid.hex
uuid.string
我们现在用native只能生成一个
最后一个increment没有试过:(
难道是它?
〉〉另一种选择就是做两个配置文件,这是我们所不喜欢的。
希望不是这个解决方案

我理解错你的意思了。那你可以自己写一个通用的Generator

其实修改没那样复杂, 不一定要支持returing语句.

trigger加sequence就等于Sybase, MS SQL的autoincrement字段, 对于sql server, 可用identity的主键生成方法, 但OracleDialect现在好象不支持identity. 只要把Sybase, MS SQL的identity代码拿来就是了.

我现在的trigger里有一个判断, 如果insert里有赋值id, 那么不用trigger赋值, 如果insert里无赋值id, 那么用trigger赋值,

hibernate先调sequence得id值, 然后插入, trigger这时候不起作用, 其他的程序就用trigger调sequence赋值id.
这样一来互不影响.

create trigger keyword_bi_tr before insert on keyword
for each row
when (new.id is null)
begin
select keyword_seq.nextval into :new.id from dual;
end;