我正在使用休眠sequencegenerator为我的主键列自动生成唯一值。示例代码如下。休眠序列生成非连续值
@Entity
@Table(name = "REQUEST")
@javax.persistence.SequenceGenerator(name = "REQ_SEQ", sequenceName = "REQUEST_SEQ")
public class Request {
/**
* Unique id for this request
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REQ_SEQ")
@Column(name = "REQ_ID")
private long requestId;
//So on
}
一切工作正常,除了生成的值交错的事实。例如,它插入5000到5015(15个插入)的值,然后第16个插入的值为5100.然后,对于一些后续插入以及再次出现的问题,它可以正常工作。 我没有任何问题,只要生成的值是唯一的,但只是想知道什么可能导致此问题。仅供参考,我正在使用Oracle。
这其实不是hibernate相关的问题,而是一个Oracle数据库的问题。这一切都取决于你的序列是如何创建的。 – 2010-09-02 06:26:52
你有多确定系统中没有其他人使用相同的序列? – 2010-09-02 06:29:08
这是一个开发服务器,正在重新开始休息发生的地方?看起来发生器impl是一个hilo,一次在内存中保留100个密钥。 – Affe 2010-09-02 06:31:14