JPA:将默认列值设置为数据库中的序列

时间:2010-12-23 11:37:43

标签: database jpa sequence jpa-2.0

我使用Postgres作为数据库,JPA 2.0作为提供者。

我一直在使用@GeneratedValue(strategy = GenerationType.IDENTITY)为该列生成自己的序列,并执行此查询(或类似的)

ALTER TABLE "comment" ALTER COLUMN id SET DEFAULT nextval('comment_id_seq'::regclass);

现在我正在使用

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_COMMENT")
@SequenceGenerator(name = "GEN_COMMENT", sequenceName = "SEQ_COMMENT")

也会生成自己的序列,但不会执行该查询。

我的观点是,当我使用IDENTITY时,数据库可以自动从序列中插入列值,这在除了通过应用程序之外还有其他数据库访问时很有用。

所以我的问题是,如果有任何方法强制JPA将该列的默认值设置为序列而不重新定义@Column(columnDefinition="...")

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是特定于数据库的,Postgres已将类型serial定义为生成类型IDENTITY,它会自动创建此数据库结构。

相关问题