2013-02-13 91 views
1

我宣佈我喜歡的類型是SERIALIZABLE由ORMLite文件規定,但我仍然得到:ORMLite的dataType = DataType.SERIALIZABLE不起作用

ORMLite不能儲存未知的類接口java.io.可序列化爲字段'task_titles'。序列化字段必須指定的dataType = DataType.SERIALIZABLE

我的代碼如下所示:

@DatabaseField(dataType=DataType.SERIALIZABLE) 
private Serializable task_titles; 

public User() { 
    task_titles = new ArrayList<String>(); 
} 

我也用,因爲ArrayList的是序列化的,但沒有運氣嘗試。

private ArrayList<String> task_titles; 

其他原因(在我的控制之外的應用限制),它是不是在這種情況下,一個很好的選擇,以創建一個包含任務標題另一個表。下面是完整的異常:

02-13 21:07:12.593: E/AndroidRuntime(15500): java.lang.RuntimeException: Unable to start activity ComponentInfo{lemonhat.snote/lemonhat.snote.MainActivity}: java.lang.RuntimeException: Could not create RuntimeExcepitionDao for class class lemonhat.snote.db.User 
02-13 21:07:12.593: E/AndroidRuntime(15500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
... 
02-13 21:07:12.593: E/AndroidRuntime(15500): Caused by: java.lang.RuntimeException: Could not create RuntimeExcepitionDao for class class lemonhat.snote.db.User 
02-13 21:07:12.593: E/AndroidRuntime(15500): at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getRuntimeExceptionDao(OrmLiteSqliteOpenHelper.java:260) 
02-13 21:07:12.593: E/AndroidRuntime(15500): at lemonhat.snote.db.DatabaseHelper.getUserDataDao(DatabaseHelper.java:109) 
02-13 21:07:12.593: E/AndroidRuntime(15500): at lemonhat.snote.MainActivity.onCreate(MainActivity.java:80) 
... 
02-13 21:07:12.593: E/AndroidRuntime(15500): Caused by: java.sql.SQLException: ORMLite can't store unknown class interface java.io.Serializable for field 'sort_order_of_lists'. Serializable fields must specify dataType=DataType.SERIALIZABLE 
02-13 21:07:12.593: E/AndroidRuntime(15500): at com.j256.ormlite.field.FieldType.<init>(FieldType.java:183) 
02-13 21:07:12.593: E/AndroidRuntime(15500): at com.j256.ormlite.table.DatabaseTableConfig.convertFieldConfigs(DatabaseTableConfig.java:236) 
02-13 21:07:12.593: E/AndroidRuntime(15500): at com.j256.ormlite.table.DatabaseTableConfig.extractFieldTypes(DatabaseTableConfig.java:101) 
02-13 21:07:12.593: E/AndroidRuntime(15500): at com.j256.ormlite.dao.BaseDaoImpl.initialize(BaseDaoImpl.java:151) 
... 

回答

2

ORMLite不能儲存未知的類接口java.io.Serializable接口現場 'sort_order_of_lists'。可序列化的字段必須指定dataType = DataType.SERIALIZABLE

我錯過了什麼嗎?這個錯誤是在談論場sort_order_of_lists但你是顯示另一個字段:

@DatabaseField(dataType=DataType.SERIALIZABLE) 
private Serializable task_titles; 

我懷疑sort_order_of_lists缺少dataType=DataType.SERIALIZABLE註釋字段。該字段是否在基類中?

如果這不是問題,那麼我懷疑你正在使用Android的表配置功能,你需要重新生成表配置,因爲它與你的對象不同步。見鏈接,詳細瞭解此功能:

http://ormlite.com/docs/table-config

+0

啊,對不起,我發現task_titles,因爲它是更短的輸入。我的筆記本電腦發生錯誤,當我寫這篇文章時沒有互聯網連接,所以我在另一臺電腦上輸入了它。 task_titles發生的錯誤與sort_order_of_lists相同。它們都是ArrayList KristofferFurst 2013-02-14 15:00:44

+0

是的,我可能會將其定義爲實際錯誤。我手動更新它,但我剛剛在文檔中看到有一種方法可以自動生成它。當我回家時我會嘗試。 – KristofferFurst 2013-02-14 15:07:11

+0

我已經更新了我的答案,並將鏈接放到了table-config文檔中,該文檔顯示瞭如何從實用程序@ Furstan88生成它。 – Gray 2013-02-14 15:12:20