我使用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="...")
?
非常感谢。
答案 0 :(得分:1)
这是特定于数据库的,Postgres已将类型serial
定义为生成类型IDENTITY
,它会自动创建此数据库结构。