JPA: установить значение столбца по умолчанию для последовательности в базе данных - PullRequest
3 голосов
/ 23 декабря 2010

Я использую 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 Ответ

1 голос
/ 02 января 2011

Это зависит от базы данных, Postgres определил тип serial как тип генерации IDENTITY, который автоматически создает эту структуру базы данных.

...