2016-01-25 31 views
0

我的數據庫出現問題。我正在使用特定的ID從API下載數據。我希望這個ID保留在我的數據庫中,以便將來可以在應用程序中使用它們。我在文檔中看到,我應該添加allowGeneratedIdInsert = true,但它不起作用 - 我仍然在數據庫中獲得0.1,等等dao.create(...)之後的ID。你能檢查我的代碼並告訴我我做錯了什麼嗎?ORMLite生成的ID

這裏是我的模型:

@DatabaseField(id = true, columnName = "id", allowGeneratedIdInsert = true) 
private int id; 

創建記錄:

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if(isChecked) { 
     try { 
     final Dao<Concert, Integer> concertDao = getHelper().getConcertDao(); 
     concertDao.create(concertList.get(position)); 
     } catch (SQLException e) { 
     e.printStackTrace(); 
     } 
    } 
} 
+0

如果你正在用'id'存儲你的實體,那麼你不需要'allowGeneratedIdInsert'。你只需要'id = true'。你能更清楚地知道當你插入它們的時候id值是什麼以及它們在數據庫中是什麼? – Gray

+0

我正在從ID爲f.e的API下載對象。 4432,當我將它保存到數據庫時它是1.我清除了緩存,現在遇到了「沒有這樣的列concert_id」的問題 - 我沒有那個列,我昨天創建了這個字段來檢查我是否可以有兩個id字段 - id和id_concerts(來自API的數據),但現在它消失了。奇怪... – Bartos

回答

1

documentation for allowGeneratedIdInsert

這僅適用於數據庫是否支持這種行爲,如果generatedId()對於該領域也是如此。

並且默認generatedIdfalse

@DatabaseField(columnName = "id", generatedId = true, allowGeneratedIdInsert = true) 
private int id; 

此外,你可以閱讀:

如果該字段爲空或則ID將產生0。當您有一個表格,其中的項目有時有ID並且有時需要它們生成時,這非常有用。

你確定你要這個行爲嗎?如果你的ID已經在後端生成了,所以你可能不需要allowGeneratedIdInsertgeneratedId它們都默認爲false。

+0

感謝您的回覆。我在文檔中找到了這些信息,但是當我設置爲@DatabaseField(columnName =「id」)時它不起作用。我試圖創建另一個字段 - concert_id,但仍然是相同的 - 我在數據庫中獲得0,1,2:/ – Bartos

+0

並且您是否嘗試使用generatedId = true,allowGeneratedIdInsert = true? –

+0

是的,沒有任何變化:/ – Bartos