2016-07-27 4 views
0

Не может для меня жизнь понять это. Так что в моем объекте запроса у меня естьИдентификатор ORMLite всегда имеет значение null (не имеет поля id)

@DatabaseField(id = true, columnName = "ID", canBeNull = false, generatedId = true) 
private int entityId; 

Всякий раз, когда я делаю метод вставки, как это:

public void insert(T object) throws SQLException { 
    DatabaseConnection connection = objectDao.startThreadConnection(); 
    Savepoint savepoint = null; 
    try { 
     savepoint = connection.setSavePoint(null); 
     objectDao.createOrUpdate(object); 
    } finally { 
     connection.commit(savepoint); 
     objectDao.endThreadConnection(connection); 
    } 
} 

Я всегда получаю ошибку, как этот

Class class UnsyncTripRequest does not have an id field 

Я не уверен, почему я получаю это от того, что, как я понимаю, идентификатор должен быть создан автоматически? я вижу в классе OrmLites BaseDaoImpl есть метод extractId, который имеет следующую строку:

FieldType idField = tableInfo.getIdField(); 

Который всегда нуль. У кого-нибудь есть представление о том, как я могу исправить эту проблему. Спасибо

ответ

0

У вас установлены оба атрибута 'id = true' и 'generatedId = true'. Можете ли вы удалить «id = true» и посмотреть, что произойдет?

+0

Я по-прежнему получаю ту же ошибку, к сожалению – goodgamerguy

+0

'generatedId' подразумевает' id'. – Gray

+1

У вас есть объект ассоциации? Как насчет этого? @ForeignCollection (id = true) См. Здесь: http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/ForeignCollectionField.html – SISLAM

1

FieldType idField = tableInfo.getIdField(); ... который всегда имеет значение null.

Проблема заключается в том, что ваша сущность не имеет ничего общего с точкой сохранения. Как-то tableInfo, создаваемый DAO, не соответствует вашей сущности. Если поле entityId находится в вашем классе, то я подозреваю, что ваш файл ormlite_config.txt не обновлен.

+0

Хм странно. Я не могу найти файл ormlite_config.txt в моем проекте. Поле entityId находится в моем классе, но странно, что это работает для другого случая – goodgamerguy

+1

Любой шанс, что он находится в суперклассе @goodgamerguy? – Gray

+0

nah я не вижу этого – goodgamerguy