1
我使用Hibernate 4和Oracle 11g。有这样一个代码的对象映射到数据库:休眠和Oracle夸大序列递增
@Entity
@Table(name = "APPLICATION", schema = "PRODUCTION")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Application")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Application {
@Id
@ComparatorIgnore
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUCTION.SEQUENCE_NEW")
@SequenceGenerator(name = "PRODUCTION.SEQUENCE_NEW", schema = "PRODUCTION", sequenceName = "PRODUCTION.SEQUENCE_NEW", allocationSize = 1)
@Column(name = "ID")
@XmlTransient
@Getter @Setter private Long id;
我得到的ID这样的序列(一段时间后),并继续产生怪异的差距进一步值:
956493
955431
956174
955995
950593
950720
952045
950998
951905
950860
949323
950058
949084
948981
948884
948786
950182
950345
949952
950469
我假设获得更稳定和平稳的增长。考虑到我有多线程应用程序,我想知道如何解决这种意外的行为。 这是序列是如何定义的:
CREATED 27.02.17
LAST_DDL_TIME 27.02.17
SEQUENCE_OWNER PRODUCTION
SEQUENCE_NAME SEQUENCE_NEW
MIN_VALUE 1
MAX_VALUE 9999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 20
LAST_NUMBER 957101
PARTITION_COUNT
SESSION_FLAG N
KEEP_VALUE N
我错过了什么? 非常感谢提前。任何答案都非常感谢。
根据@ john16384的回答和本文档[链接](https://docs.oracle.com/cd/B28359_01/server.111/b28310/views002.htm#sthref2219),“数据库没有等待事务增加了一个序列,然后再次增加序列“。现在很清楚,谢谢你的考虑。 –
为什么'max_value'是'9999999999999999999999999999'? –