mem*_*und 3 java spring hibernate
private static final String SEQUENCE = "my_seq";
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQUENCE)
@SequenceGenerator(name = SEQUENCE, sequenceName = SEQUENCE)
private Long titId;
Run Code Online (Sandbox Code Playgroud)
这将创建以下架构:
CREATE SEQUENCE my_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1000
CACHE 1;
Run Code Online (Sandbox Code Playgroud)
观察:当我将current value序列设置为 1 时,第一个@Id自动生成的是50。当我将值设置为 时1000,第一个 id 为50000。
因此,不知何故,序列的当前值总是乘以50。为什么?我怎样才能防止这种情况并只使用序列中的nexval?
此行为来自@SequenceGenerator其参数的默认值 50 allocationSize。如果您愿意,您可以更改它:
@SequenceGenerator(name = SEQUENCE, sequenceName = SEQUENCE, allocationSize = 42)
private Long titId;
Run Code Online (Sandbox Code Playgroud)
这是出于性能原因。它允许 Hibernate 预订一组 id,并防止每次需要新 id 时询问数据库。
| 归档时间: |
|
| 查看次数: |
4343 次 |
| 最近记录: |