По умолчанию Hibernate использует одну глобальную последовательность под названием hibernate_sequence. Итак, если добавляется запись клиента, и идентификатор генерирует 100, а затем я добавляю запись страны, и идентификатор генерирует 101.
в модели страны
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "CTRY_ID")
private long ctryID;
в модели клиента
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "CUST_ID")
private long custID;
Мне нужен отдельный механизм для таблиц клиентов и стран, т.е. Последний идентификатор, хранящийся в таблице клиентов, равен 91, поэтому при добавлении следующей записи идентификатор становится равным 92. Аналогичным образом, последний идентификатор, хранящийся в стране, равен 82, поэтому следующая запись должна иметь идентификатор 83.
Как я могу добиться такого поведения в Spring Boot/Oracle.




Попробуйте создать собственную последовательность, используя аннотацию @SequenceGenerator. Вы можете установить начальное значение последовательности initialValue = 1 и allocationSize=1 для увеличения. Если вы не будете использовать allocationSize=1, спящий режим использует размер выделения по умолчанию, равный 50.
Для страны:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ctry_seq")
@SequenceGenerator(name = "ctry_seq", sequenceName = "ctry_seq", initialValue = 1, allocationSize=1)
@Column(name = "CTRY_ID")
private long ctryID;
Для клиента:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cust_seq")
@SequenceGenerator(name = "cust_seq", sequenceName = "cust_seq", initialValue = 1, allocationSize=1)
@Column(name = "CUST_ID")
private long custID;
Вам нужно определить последовательность в своей базе данных, использовать @SequenceGenerator и пометить свое поле как сгенерированное db (@GeneratedValue):
CREATE SEQUENCE seq
MINVALUE 1
MAXVALUE 1000000
START WITH 1
INCREMENT BY 1
CACHE 100;
Объекты:
@SequenceGenerator(name = "seq", initialValue=1, allocationSize=100)
public class Country {
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "seq")
@Id long id;
}
То же самое с другим - отдельный генератор последовательности.