0
回答
Hibernate向Oracle库中插入数据,每插入50条,就会报唯一性错误。

如题,同一个实体化类,当主键生成策略采用GenerationType.SEQUENCE时,每插入50行数据就会报主键违反唯一性原则的错误。

如果注释掉生成策略,手工添加主键,连续保存100个也没有问题。

@Entity
@Table(name = "TESTTABLE", schema = "DAILY")
public class Testtable {

	private Integer id;
	private Date version;

	@Id
	@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
	@SequenceGenerator(name = "TABLE_ID_SEQ", sequenceName = "TABLE_ID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TABLE_ID_SEQ")
	public Integer getId() {
		return this.id;
	}


百思不得其解,请大神赐教。

举报
彩云小斯
发帖于2年前 0回/283阅

以下是问题补充:

  • @彩云小斯 :发现问题,hibernate 在使用sequence时会进行一次下面的查询 Hibernate: select TABLE_ID_SEQ.nextval from dual 插入数据时,TABLE_ID_SEQ并不会增长,当插入50条后, hibernate又会执行一次 Hibernate: select TABLE_ID_SEQ.nextval from dual 然后导致主机唯一性报错 (2年前)
顶部