2016-07-27 62 views
0

不能爲我的生活弄清楚這一點。 所以在我的請求對象我有ORMLite id始終爲空(沒有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 

我不知道爲什麼我從我所瞭解的id應該是自動創建的? 我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(); ......總是空的。

這個問題似乎是你的實體,與保存點無關。不知怎的,由DAO生成的tableInfo與您的實體不匹配。如果entityId字段在您的課程中,那麼我懷疑您的ormlite_config.txt文件尚未更新。

+0

嗯奇怪。我在我的項目中找不到任何ormlite_config.txt文件。 entityId字段在我的班級,但奇怪的是這是適用於另一種情況 – goodgamerguy

+1

任何機會在超級類@goodgamerguy? – Gray

+0

不,我看不到它 – goodgamerguy