我们在 2 个负载平衡服务器上部署了 Spring 3 + Hibernate 应用程序。
在数据库中插入 50 次后,hibernate 不会调用数据库序列 nextval,它会不断增加计数。因此,来自两个服务器的序列值是重叠的,我得到“唯一约束违反”异常。
例如,第一次来自两个服务器的序列值分别为 100 和 150。当第一个实例的序列达到 149 时,应该调用 seq.nextVal。但是由于它没有这样做并且不断地将 seq 值增加到 150 被其他实例使用并且它失败了。默认分配大小:50
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CUSTOMER_ID_SEQ")
@SequenceGenerator(name = "CUSTOMER_ID_SEQ", sequenceName = "CUSTOMER_SEQ")
@Column(name = "CUST_ID", unique = true, nullable = false)
public long getCustId() {
return custId;
}
提前致谢。