2011-09-16 26 views
0

我在我的應用程序中使用ormlite android,我有一個表中有一列可以存儲三種類型的數據,它們實際上是三個不同類的對象。我想在pojo類中聲明該字段的數據類型,我也試過用Object,但仍然顯示error.Ormlite不理解Object數據類型。定義POJO類中的數據類型,當一個字段可以是多種類型

ormlite是否提供對此類功能的支持?

編輯1

這是我的POJO類

@DatabaseTable(tableName = "itinerary_item") 
public class ItineraryItem { 
@DatabaseField(columnName = "id", id = true) 
private int mId; 

@DatabaseField(dataType = DataType.SERIALIZABLE, columnName = "item_type", foreign = true, foreignAutoRefresh = true) 
private Object mItem; 

凡本MITEM可以在這基本上是三個不同的POJO類的對象的數據庫是3種不同的類型。 但我的問題是ORMLite不支持對象數據類型。

回答

2

請提供從您要堅持目標代碼樣本,請列出異常ORMLite拋出。


但在此期間,我可以談一點關於ORMLite能堅持什麼類型的。下面是完整的列表:

http://ormlite.com/docs/data-types

它會檢測各個領域類型。對於明確位於列表中的對象,ORMLite還支持實現Serializable的持久對象。對於這些,你必須特別聲明@DatabaseField(dataType = DataType.SERIALIZABLE)的類型。

http://ormlite.com/docs/serializable

最後,對於高級用戶,您可以定義並與@DatabaseField(persisterClass = ....class)代碼註冊自己的持留類。


編輯:

如果mitem是3種類型,那麼你有3個不同的領域,每一個明確的類型之一,我會建議 - 不要使用Object。然後,對於pojo類的每個實例,將設置3個字段中的1個,其他字段將爲空。

+0

感謝您的回覆。我嘗試了SERIALIZABLE,但它給出了以下異常SQL拋出異常拋出字段Field類java.lang.Object FieldType:name = mItem,class = ItineraryItem對於數據類型無效SERIALIZABLE –

+1

作爲答案和文檔狀態,對象保持爲'SERIALIZABLE'類型必須實現'java.io.Serializable'接口。 'ItineraryItem'做到了嗎? – Gray

+0

我使用的另一種方法是將mItem設置爲字符串類型,其中三個不同的字符串用於三個不同的類和對象類型數據字段,而不用註釋ormlite,並基於字符串我剛初始化該對象。只是評論哪種方法更好?無論如何感謝您的快速幫助 –

相關問題