N>Получается как-то странно, в базе создается запись,допустим, с id 1, а у объекта id 2. После повторного создания в базе id 3, а у объекта id 4
Похоже что 2 у тебя ID генерируется два раза. 1й раз при вставке записи, база использует триггер и sequence и генерирует Id. А потом ещё и хибер следуя аннотациям использует тот же sequence и тоже генерирует id.
Поэтому нужно либо убрать генерацию на уровне БД, что не очень-то удобно. Либо аннотации прописать попроще. GenerationType.AUTO или что-то такое. Всё про Sequence из маппинга убрать.
N>>Получается как-то странно, в базе создается запись,допустим, с id 1, а у объекта id 2. После повторного создания в базе id 3, а у объекта id 4
B>Похоже что 2 у тебя ID генерируется два раза. 1й раз при вставке записи, база использует триггер и sequence и генерирует Id. А потом ещё и хибер следуя аннотациям использует тот же sequence и тоже генерирует id. B>Поэтому нужно либо убрать генерацию на уровне БД, что не очень-то удобно. Либо аннотации прописать попроще. GenerationType.AUTO или что-то такое. Всё про Sequence из маппинга убрать.
сделал так:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
public int getId() {
return id;
}
Здравствуйте, newuser, Вы писали:
N>Есть база на firebird, в базе таблица, id которой увеличивает генератор. Как сделать, чтобы при создании объекта id брался из базы?
Для Postgres работает такой метод:
create table xxx {
id serial primary key,
...
class xxx {
@Id @GeneratedValue(strategy = IDENTITY)
private Integer id;
...
может и для Firebird сработает? В данном случае в базу уходит insert into xxx (id, ...) values (DEFAULT, ...), база сама генерирует id и возвращает его.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, newuser, Вы писали:
N>>но объекту присваиваются значения 1,2,3,4 B>А какие должны?
в базе 61,62,63, а у объекта 1,2,3,4