У меня небольшие проблемы с использованием Hibernate со столбцом char (6) в Oracle. Вот структура таблицы:
CREATE TABLE ACCEPTANCE
(
USER_ID char(6) PRIMARY KEY NOT NULL,
ACCEPT_DATE date
);
Для записей, чей идентификатор пользователя содержит менее 6 символов, я могу выбрать их без добавления идентификатора пользователя при выполнении запросов с использованием SQuirreL. И.Е. следующее возвращает запись, если есть запись с идентификатором пользователя «abc».
select * from acceptance where user_id = "abc"
К сожалению, при выполнении выбора через Hibernate (JPA) следующее возвращает ноль:
em.find(Acceptance.class, "abc");
Если я добавлю значение, он вернет правильную запись:
em.find(Acceptance.class, "abc ");
Модуль, над которым я работаю, получает идентификатор пользователя, незаполненный из других частей системы. Есть ли лучший способ заставить Hibernate работать иначе, чем вставлять код для адаптации идентификатора пользователя к определенной длине перед передачей его в Hibernate? (что может привести к проблемам с техническим обслуживанием в будущем, если длина изменится)