allocationSize和重复的pk问题

时间:2015-11-15 21:17:52

标签: oracle ejb jboss7.x

Jboss 7.2.0,ejb3,oracle 项目中的所有实体都定义了序列生成器 @SequenceGenerator(name =" xx",sequenceName =" yy" allocationSize =" 10")

对于一对多关系,有时我遇到了重复主键的问题。不确定这里有什么问题,但在事务回滚后,序列被重置并且我一直有约束违规错误 我已将allocationSize更改为1,看起来没问题,但原因是什么?

2 个答案:

答案 0 :(得分:0)

参见讨论:https://developer.jboss.org/thread/104030?start=15&tstart=0

在你的问题中不清楚sequenceName是hibernate_sequence还是oracle序列?如果它是神谕 - 你不应该有重复

@Id(generate = GeneratorType.SEQUENCE, generator = "mysequence")
@SequenceGenerator(name = "mysequence", sequenceName = "MY_SEQ",allocationSize=1)
//@SequenceGenerator(name = "mysequence", sequenceName = "hibernate_sequence")
@Column(name = "COVT_ID", primaryKey=true)
public long getId() {
return m_id;
}

答案 1 :(得分:0)

您可能在persistence.xml中使用了ddl-generation属性,其值为“drop-create-tables”。这会导致所有序列和表被删除并再次使用初始值重新创建,因此,重用相同的序列值。