Spring-Boot 2.0.0, похоже, изменил способ автоматической настройки Hibernate.
Пусть предположим две простые и независимые сущности JPA:
@Entity
class Car {
@Id
@GeneratedValue
private long id;
//....
}
@Entity
class Airplane {
@Id
@GeneratedValue
private long id;
//....
}
Ранее, используя Spring-Boot 1.5.10, я смог генерировать отдельные последовательности автоматических приращений, что означает, что я могу получить Car
с 1 в качестве первичного ключа и Airplane
с 1 в качестве первичного ключа. Никакой корреляции между ними, например, нет общей последовательности.
Теперь, с 2.0.0, когда я последовательно создаю очень первый Car
затем самый первый Airplane
, автомобиль получает 1 как id, а самолет получает 2.
Похоже, что он должен иметь дело с GeneratedType.AUTO
, то есть "используется по умолчанию", указанным в @GeneratedValue
аннотации @GeneratedValue
.
Однако мои рассуждения, кажется, останавливаются здесь, поскольку GeneratedType.AUTO
также был установлен по умолчанию с 1.5.10.
Простым обходным решением, чтобы оправдать мои ожидания, является указание типа стратегии IDENTITY
для генерации следующим образом:
@Entity
class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
//....
}
@Entity
class Airplane {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
//....
}
Я не могу понять объяснения этого поведения.
Что изменило Spring-boot 2.0.0, объяснив этот сценарий?