2013-08-26 34 views
5

我想將類對象的arraylist保存到ormlite數據庫中,但它給出錯誤java.lang.IllegalArgumentException:沒有字段在類java.util中具有DatabaseField註釋.ArrayList如何在ormlite數據庫中存儲arraylist

我的代碼是

@DatabaseTable 
public class ManageModelDetails { 

@DatabaseField(generatedId = true) 
private int id; 

@DatabaseField(foreign = true, foreignAutoRefresh = true) 
private ArrayList<ModelDetails> listModelDetails; 

// =============================================== 
public ManageModelDetails() { 
    super(); 
} 

// =============================================== 

public ManageModelDetails(int id, ArrayList<ModelDetails> listModelDetails) { 
    super(); 
    this.id = id; 
    this.listModelDetails = listModelDetails; 
} 

// =============================================== 

public void setId(int id) { 
    this.id = id; 
} 

public int getId() { 
    return id; 
} 

public void setModelList(ArrayList<ModelDetails> listModelDetails) { 
    this.listModelDetails = listModelDetails; 
} 

public ArrayList<ModelDetails> getModelList() { 
    return listModelDetails; 
} 

} 

回答

6

我認爲你需要使用外國集合。看看這裏:

+0

這是真的,如果列表的順序並不重要(的問題提到了一個ArrayList)。如果是這樣,那麼數組列表應該以自定義的方式存儲。 – Christine

2

如果要保存對象的ArrayList到ORMLite最簡單的方法是這樣的:

@DatabaseField(dataType = DataType.SERIALIZABLE) 
private SerializedList<MyObject> myObjects; 

,並讓我的物品清單:

public List<MyObject> getMyObjects() { 
    return myObjects; 
} 

這裏是SerializedList:

public class SerializedList<E> extends ArrayList<E> implements Serializable { 
} 
+0

什麼是SerializedList?從哪個圖書館? – NickUnuchek

+0

實際上這只是一個實現Serializable的ArrayList,請參閱已更新的答案 –

+0

ArrayList已經是Serializable – NickUnuchek