Для тестового запуска приложения я использую базу данных H2 1.4.197.Приложение развернуто на TomEE 7.1.0, который использует EclipseLink 2.6.4.
. В журналах я вижу, что во время запуска EclipseLink создает таблицы, последовательности и т. Д. Даже инициализирует последовательность со значением 0:
[EL Fine]: 2019-02-13 20: 25: 37.442 - ServerSession (1981996085) - Соединение (1317890500) - Поток (Thread [http-nio-8080-exec-4,5, main]) - СОЗДАТЬ ТАБЛИЦУ ПОЛЬЗОВАТЕЛЯ (ИД BIGINT NOT NULL, ИМЯ ПЕРВОГО ИМЕНИ, ИМЯ ФАБРИКИ ИМЕНИ, КЛЮЧ ПЕРВИЧНОГО (ID)) [EL Fine]: 2019-02-13 20: 25: 37.467 - Сеанс сервера (1981996085) - Соединение (1320052060)) - Thread (Thread [http-nio-8080-exec-4,5, main]) - СОЗДАТЬ АДРЕС ТАБЛИЦЫ (ID BIGINT NOT NULL, CITY VARCHAR, HOUSENO VARCHAR, STREET VARCHAR, ПЕРВИЧНЫЙ КЛЮЧ (ID)) [ELFine]: 2019-02-13 20: 25: 37.474 - ServerSession (1981996085) - Соединение (1328271122) - Поток (Thread [http-nio-8080-exec-4,5, main]) - CREATE TABLESEQUENCE (SEQ_NAME VARCHAR (50) NOT NULL, SEQ_COUNT NUMERIC (38), PRIMARY KEY (SEQ_NAME)) [EL Fine]: 2019-02-13 20: 25: 37.489 - Сеанс сервера (1981996085) - Соединение (432174967) --Поток (Поток [http-nio-8080-exec-4,5, основной]) - ВЫБРАТЬ * ИЗ ПОСЛЕДОВАТЕЛЬНОСТИ ГДЕ SEQ_NAME = 'SEQ_GEN' [EL Fine]: 2019-02-13 20: 25: 37.51 - ServerSession (1981996085) - Соединение (1127939384) - Поток (Поток [http-nio-8080-exec-4,5, main]) - INSERT INTO SEQUENCE (SEQ_NAME, SEQ_COUNT) значения ('SEQ_GEN', 0)
Мне также удалось подключиться через консоль H2 (я запустил WebServer вручную внутри приложения) и посмотреть там таблицы / последовательности.
Когда я делаю простой выбор через JPQL, все работает нормально:
Collection<User> getUsers() {
Query query = entityManager.createQuery("select u from User u");
return query.getResultList();
}
Однако, когда я пытаюсь вставить новую строку с помощью метода persist:
void saveUser(User user) {
entityManager.persist(user);
}
, я получаю исключение, что таблицы не существуют:
Исключение [EclipseLink-4002] (Eclipse Persistence Services - 2.6.4.v20160829-44060b6): org.eclipse.persistence.exceptions.DatabaseException Внутреннее исключение: org.h2.jdbc.JdbcSQLException: Tabela "SEQUENCE" nie istnie TableПОСЛЕДОВАТЕЛЬНОСТЬ "не найдено;Оператор SQL: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?ГДЕ SEQ_NAME =?[42102-197] Код ошибки: 42102 Вызов: ОБНОВИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ УСТАН. SEQ_COUNT = SEQ_COUNT +?ГДЕ SEQ_NAME =?bind => [50, SEQ_GEN] Запрос: DataModifyQuery (name = "SEQUENCE" sql = "ОБНОВЛЕНИЕ SEQUENCE SET SEQ_COUNT = SEQ_COUNT +? WHERE SEQ_NAME =?")
РЕДАКТИРОВАТЬ:
Реализация сущности пользователя:
@Entity
public class User {
private Long id;
private String firstName;
private String lastName;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}