Jak utworzyć oddzielne sekwencje dla każdej tabeli?

0

Witam

Chciałbym ustawić numerowanie w kluczach podstawowych w tabelach w taki sposób, żeby inkrementacja zawsze była +1.
Obecnie korzystam z generatora="native", w zasadzie działa poprawnie, ale klucz generowany jest z jednej sekwencji.

Myślę, że można by ustawić generator na sequence

<generator class="sequence">
              <param name="sequence">B_sequence</param>
</generator>

i utworzyć sekwencję w bazie, ale czy jest możliwość ustawienia oddzielnych sekwencji z poziomu hibernate?

Poniżej schemat bazy (PostgreSQL 8.0.0):

Bazka.png

Pozdrawiam.

0

Witam

Metoda jest taka:

  1. Konfiguracja w pliku mapowania jak poniżej:
<generator class="sequence">
              <param name="sequence">B_sequence</param>
</generator>
  1. Utworzenie sekwencji w bazie danych (postgreSql).
CREATE SEQUENCE B_sequence
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE B OWNER TO postgres;

3.Podpięcie sekwencji do tabeli.

ALTER TABLE B
ALTER COLUMN B_ID
SET DEFAULT NEXTVAL('B_sequence');

Analogicznie dla tabeli C.

Pozdrawiam

0

Jak korzystasz z hibernate, to nie musisz przypiswać sekwencji w bazie, możesz to zrobić adnotacjami w encji.
Nie chce tutaj wymyslać, ale z tego co pamietam to było coś w deseń

@SequenceGenerator(name = "category_seq", sequenceName = "category_id_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "category_seq")

i to na pewno dziala tak jak Ty chcesz - z np osobnych sekwencji

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0