@ Femi правильно, что объект может быть сгенерированным идентификатором или идентификатором, но не оба. Проблема заключается не только в том, как ORMLite хранит объект, но также должна соответствовать схеме, с которой была сгенерирована база данных.
ORMLite поддерживает опцию allowGeneratedIdInsert=true
для аннотации @DatabaseField
, которая допускает такое поведение. Это не поддерживается некоторыми типами баз данных (например, Derby), но работает под управлением Android / SQLite.
Для потомков вы также можете создать 2 объекта с одной и той же таблицей - один с сгенерированным идентификатором, а другой - без. Затем вы можете вставить, используя Дао сгенерированного идентификатора, чтобы получить такое поведение, а другой Дао, чтобы принять значение идентификатора, установленное вызывающей стороной. Вот другой ответ, говорящий об этом . Проблема для вас звучит так, что это создаст множество дополнительных DAO.
Единственное другое решение - не использовать идентификатор для ваших целей. Пусть база данных сгенерирует идентификатор, а затем у вас будет дополнительное поле, которое вы используете для внешних целей. Принудительное использование идентификатора базы данных в определенных обстоятельствах представляется мне плохим примером.