Java hibernate试听为一个表中的多个插入生成相同的版本id

Java hibernate试听为一个表中的多个插入生成相同的版本id,java,hibernate,audit,Java,Hibernate,Audit,我正在使用hibernate 3.5版的hibernate试镜。当我尝试在一个事务中在一个表中插入一条记录时,它工作正常,但问题是当“批处理”运行时 它在一个事务中将多条记录插入一个表中,然后为审计表生成“rev id”,这会导致“integrityconstraintsvillance” 由于hibernate的正常行为是在事务结束时(刷新时)触发所有insert查询,但此时仅触发一个查询以生成“rev id” select hibernate_sequence.nextval from d

我正在使用hibernate 3.5版的hibernate试镜。当我尝试在一个事务中在一个表中插入一条记录时,它工作正常,但问题是当“批处理”运行时 它在一个事务中将多条记录插入一个表中,然后为审计表生成“rev id”,这会导致“integrityconstraintsvillance”

由于hibernate的正常行为是在事务结束时(刷新时)触发所有insert查询,但此时仅触发一个查询以生成“rev id”

 select hibernate_sequence.nextval from dual;
请告诉我这是审计中的错误还是我遗漏了什么??
提前感谢

一个revid总是跨越多个表中的修改

是的,在事务结束时调用插入,但是:如果使用乐观事务隔离,则事务可以读取当前处于活动状态但尚未提交的其他事务的未提交状态

如果您成为integrityconstraintsviolation,则列
rev_id
不幸配置为“唯一”。这是一个错误的数据库模式!通过删除列
rev\u id
的唯一性来更正架构


全局hibernate relationtable中的
rev_id
-列必须是唯一的,因为它是主键!(全局hibernate relationtable通常还包含一个时间戳)。

revid不是enver,revid是auditions。这里我讨论的是审计表中的“rev”列。这些表(模式)由hibernate envers自动生成。我们尚未创建架构,因此无法删除唯一性约束。我怀疑是envers将其识别为一个insert语句,其中调用了多个insert。可能这是一个错误,您使用的是什么数据库?已审核表中的数据库列rev_id是什么类型的?我们使用的是Oracle 11g。“rev”列的数据类型为“number”。@rishi再次声明:Hibernate Envers不会创建架构,Hibernate Auditions会创建它@rishi确实是个bug,请报告Hibernate!正如您在
地址和
人员的
版本中所看到的,他们的
版本不唯一!