我遇到了这个非常奇怪的问题,当从 java/Hibernate 与 SqlDeveloper 工具发出时,oracle 序列返回非常不同的值。
@SequenceGenerator(name = "PARAM_ID_SEQUENCE", initialValue = 10, allocationSize = 30, sequenceName = "PARAM_ID_SEQUENCE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PARAM_ID_SEQUENCE")
@Column(name = "PARAMETER_ID")
以上返回 1177248345。我将日志级别转到跟踪以查看正在发出的实际查询,它是:select SPS_PARAM_ID_SEQUENCE.nextval from dual
。现在我从 sql developer tool 中针对相同的序列发出相同的查询,它返回:39241615
它小了 2 个数量级!此外,这是我期望的准确值。
CREATED 03-OCT-14
LAST_DDL_TIME 25-JAN-18
SEQUENCE_OWNER API
SEQUENCE_NAME PARAM_ID_SEQUENCE
MIN_VALUE 1
MAX_VALUE 9999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 20
LAST_NUMBER 39241624
PARTITION_COUNT
SESSION_FLAG N
KEEP_VALUE N
我确认两者都在相同的环境中针对相同的数据库模式等发出请求,但由于某种原因,Hibernate 获得了更高的价值。有没有人遇到过类似的问题。休眠以某种方式“填充”序列吗?