좋아, 내가 정말로 이것을 원한다면 100 % 확신하지는 못했지만, 현재는 좋은 생각 인 것 같다.Hibernate와 PostgreSQL : GenerationType.IDENTITY를 설정할 수 있습니까? 각 id 열의 기본값은 공유 시퀀스에서 가져옵니다.
나는이처럼 내 개체를 구성 : 나는 Hibernate가 테이블을 생성 할 경우
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id = 0;
, 결과는 다음과 같습니다 차례로
id bigserial NOT NULL,
CONSTRAINT test_pkey PRIMARY KEY (id)
BIGSERIAL은 기본값으로 BIGINT로 변환 :
nextval('test_id_seq'::regclass)
이제는 괜찮 았지만 현재는 하나의 시퀀스를 사용하려고합니다. 모든 테이블과 기본 값을 원하는가되게합니다 :
nextval('my_global_sequence'::regclass)
내가이 자동으로 같은 테이블을 정의하는 최대 절전 모드로 말할 수있는 방법 어쩌면 내가 갈 수 있고 나중에 수동으로 디폴트 값을 조정,하지만 당신은 어떤 아이디어가 있습니까? ID 열에 대해이 같은 코드 (테스트되지 않은 SQL 구문)를 발행 것이라고 내 자신의 생성 테이블 SQL 전략을 추진하는 방법 어쩌면 거기 : 나는 IDENTITY 전략을 고수하려는
id bigint NOT NULL DEFAULT = nextval('my_global_sequence'::regclass)
주, 나 때문에 "hi/lo 곱하기 할당 크기 캐시 시퀀스"가 발생하지 않도록하고 싶습니다. 때때로 pgAdmin을 통해 수동 행을 삽입하여 최대 절전 모드와 ID 충돌을 일으키지 않아도됩니다. 다른 모든 전략은 나에게 마술처럼 보입니다. (= 나는 그것들을 이해하지 못합니다.)
당신이 사용하고자하는 시퀀스 생성기 확인하려면 ID에 주석을 사용할 수 있습니다
나는 이것을 테스트했지만 나에게 적합하지 않습니다. id 컬럼은 bigserial로 정의되고, 시퀀스 이름 'test_id_seq'가 생성됩니다. 나에게 GenerationType.IDENTITY가 @SequenceGenerator 어노테이션보다 우선하는 것처럼 보입니다. – Zalumon