Какой тип автоинкрементации используется базой данных H2 в памяти? - PullRequest
0 голосов
/ 29 июня 2018
Приложение

My Spring Boot 2 / Hibernate 5 выполняет некоторые интеграционные тесты для H2 версии сервера 1.4.197.

Какой тип автоинкремента использует сервер базы данных?

  • таблица, содержащая число, глобальное для всех таблиц
  • последовательность 'hibernate_sequence', глобальная для всех таблиц?
  • какой-нибудь столбец автоинкремента, по одному для каждой таблицы?
  • какие-то нативные последовательности, по одной для каждой таблицы?

ОБНОВЛЕНИЕ: После комментариев приведена конфигурация аннотаций Hibernate:

@MappedSuperclass
public abstract class AbstractEntity {

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_native")
  @GenericGenerator(name = "id_native", strategy = "native")
  @Column(name = "id", updatable = false, nullable = false)
  private Long id;
...
}

@Entity
@SequenceGenerator(name = "id_generator", sequenceName = "user_role_id_seq")
public class UserRole extends AbstractEntity {
...
}

А параметры подключения:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy
spring.datasource.url=jdbc:log4jdbc:h2:file:./target/useraccounttest;DB_CLOSE_ON_EXIT=FALSE;IGNORECASE=TRUE
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.show-sql=true

Обратите внимание, что последовательность user_role_id_seq предназначена для использования только базой данных Oracle и, как мы надеемся, игнорируется базой данных H2.

...