Больше не могу получить модель DBI getId() в activejdbc 1.4.12
Я использовал activejdbc 1.4.9, и следующий пример кода работал нормально
Client client = new Client();
client.save();
Assert.assertNotNull(client.getId());
Так как я обновил до 1.4.12, client.getId() всегда возвращает ноль, когда save вставляет новую запись. то есть id не обновляется.
Кто-нибудь это тоже заметил? Нужно ли делать что-то другое, используя эту версию, чтобы получить только что созданный идентификатор?
1 ответ
Я не могу подтвердить это с версией 1.4.12. Например, я написал этот пример: https://github.com/javalite/simple-example/blob/new_id. Проверьте код в Main.java. Как видите, код идентичен вашему, но в строке 21 он выводит реальное значение нового идентификатора.
Если вы можете собрать простой пример, который повторяет вашу проблему, я посмотрю.
РЕДАКТИРОВАТЬ:
Теперь, когда вы предоставили больше информации в комментариях ниже, проблема в том, что вы устанавливаете идентификатор в пустую строку: "". Потому что идентификатор не null
больше, метод save()
использования update
скорее, чем insert
, Затем обновление использует значение ID для обновления "существующей" записи и в результате ничего не делает. Возиться со значением ID возможно, но не рекомендуется. Пожалуйста, смотрите это для получения дополнительной информации: http://javalite.io/surrogate_primary_keys