Как я могу обработать нулевые значения в INSERT с JPA? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь выполнить операцию вставки в таблицу БД Oracle из Java с JPA.
Ниже приведен мой код:

String coCode;
String coDescription;

/* some operations on data ... */

String queryStatement = 
  "insert into MANAGER_DATA (CO_CODE, CO_DESCRIPTION) values (?1, ?2)";

Query updateQuery = getEntityManager(context).createNativeQuery(queryStatement);

updateQuery.setParameter(1, coCode);
updateQuery.setParameter(2, coDescription.compareTo("") == 0 ? null : coDescription);

updateQuery.executeUpdate();

Проблема в том, что coDescription может быть нулевымв случае пустой строки и, в этом случае, я хочу, чтобы нулевое значение также добавлялось в таблицу (coCode является первичным ключом, но coDescription допускает значение NULL).Очевидно, я не могу передать значение null в функцию setParameter напрямую, как я делаю выше.

Как я могу решить эту проблему и разрешить добавление нулевого значения в мою таблицу БД?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Похоже, вы используете старую версию Hibernate, затронутую HHH-9165 setParameter createNativeQuery не поддерживает нулевую ошибку .Обновите до Hibernate 5.0.2 или новее, чтобы решить эту проблему.Как уже упоминалось, Джира:

Только что протестировал его с Hibernate 5.0.2, и, похоже, ошибка устранена.

0 голосов
/ 25 октября 2018

Oracle оценивает пустые строки как ноль .

Например:

insert into MANAGER_DATA (CO_CODE, CO_DESCRIPTION) values ('my_code', '')

вставит эту строку: ('my_code', null).

Поэтому вы можете оставить пустую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...