【发布时间】:2016-07-11 21:41:40
【问题描述】:
我想使用休眠工具(pojo to sql)生成序列。绝对可以正常工作。
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqid-gen")
@SequenceGenerator(name = "seqid-gen", sequenceName = "RTDS_ADSINPUT_SEQ" )
@Column(name="id")
public Long getId() {
return id;
}
这段代码在sql下面生成
create sequence RTDS_ADSINPUT_SEQ;
问题是我想指定类似的属性
START WITH, INCREMENT BY, NOCACHE
最终的 ddl 脚本应该如下所示
CREATE SEQUENCE RTDS_ADSINPUT_SEQ MINVALUE 1 MAXVALUE
999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE;
但目前我看到hibernate只支持name、sequncename、allocationSize、initialvalue。我的疑问是,如果我们使用 allocationSize = 1 & initialValue = 1,我们是否还需要提及“nocache”。如果是这样,我们是否有任何类型的“nocache”注释?
如果我可以将该属性作为注释包含在 pojo 中,请告诉我。
【问题讨论】:
-
最好使用 guid 作为标识符。所有这些问题都消失了,就像变魔术一样(被完全不同但更简单的一组问题所取代)
-
为什么不直接指定 initValue 和 allocationSize 看看会发生什么?!!
-
如果您喜欢为每个主键和外键值存储大量数据,则对象 ID 的 GUID 非常有用。如果您的公司通过销售存储解决方案赚钱,那么请出去告诉全世界使用 GUID 而不是 4 字节 (Int) 或 8 字节 (BigInt) 类型的 ID。不要忘记所有这些 ID 最终都在索引中,因此表空间不仅更大,而且引用这些对象的每个索引也最终变得更大。还要告诉他们,当访问的数据比你必须的多时,对性能没有影响:) 这就是云的用途,对吗?
标签: java hibernate jpa primary-key sequence