提问人:Panadol Chong 提问时间:2/8/2021 最后编辑:James ZPanadol Chong 更新时间:2/8/2021 访问量:302
db2 get 序列值与值 get through application 不同
db2 get sequence value different with value get through application
问:
我在我的应用程序和 db2 中发现了一个奇怪的事件。
我创建了一个序列,如下所示:
CREATE OR REPLACE SEQUENCE MY.CSAUDITTRAIL_SEQ AS BIGINT START WITH 1 INCREMENT BY 10 NO MAXVALUE CYCLE ORDER;
我有一张表格如下:
CREATE TABLE MY.CHANNELSERVICEAUDITTRAIL (
"CSAUDITID" BIGINT NOT NULL ,
"LOGINID" BIGINT ,
"CREATED" TIMESTAMP , CONSTRAINT "CHANNELSERVICEAUDITTRAIL_PK" PRIMARY KEY ( "CSAUDITID" )
);
在我的 CHANNELSERVICEAUDITTRAIL 实体类中,我有如下内容:
@Entity
@Table(schema = "MY")
@SequenceGenerator(name = "CSAUDITTRAIL_SEQ", initialValue = 1, allocationSize = 500, sequenceName = "MY.CSAUDITTRAIL_SEQ", schema = "MY")
public class ChannelServiceAuditTrail {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CSAUDITTRAIL_SEQ")
private long csAuditId;
我用来在我的层中进行持久化和刷新:org.hibernate.jpa.spi.AbstractEntityManagerImpl
DataAccessBean
@Override
public T persistAndFlush(T entity) {
getEm().persist(entityClass.cast(entity));
getEm().flush();
return entity;
}
据我了解,每次我坚持并刷新我的实体时,该值都会从CSAUDITTRAIL_SEQ获得,并且每次增加 10。ChannelServiceAuditTrail
csAuditId
但是输出和我看到的不一样,当我使用下面的查询来获取序列值时,每次该值都会增加 10,例如当前值为 19881
select next value for tibs.CSAUDITTRAIL_SEQ from SYSIBM.SYSDUMMY1;
但是,在我的应用程序中,当我调试或将日志放在 下时,我发现值不同,不是 19881,而是它的 19302,并且每次增加 1。getEm().persist(entityClass.cast(entity));
我想知道这怎么会发生,这是我错过了 db2 序列的一些规则吗?
答: 暂无答案
评论