Больше не могу получить модель 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

Другие вопросы по тегам