2

ORMLite のドキュメントで指定されているように型を宣言しましたがSERIALIZABLE、それでも次のようになります。

ORMLite は、フィールド 'task_titles' の不明なクラス インターフェイス java.io.Serializable を格納できません。シリアライズ可能なフィールドは、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)
...
4

1 に答える 1

2

ORMLite は、フィールド 'sort_order_of_lists' の不明なクラス インターフェイス java.io.Serializable を格納できません。シリアライズ可能なフィールドは、dataType=DataType.SERIALIZABLE を指定する必要があります

何か不足していますか?このエラーはフィールドに関するsort_order_of_listsものですが、別のフィールドを表示しています:

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

注釈フィールドsort_order_of_listsが欠落していると思われます。dataType=DataType.SERIALIZABLEそのフィールドは基本クラスにありますか?

それが問題でない場合は、Android の table-config 機能を使用していると思われ、オブジェクトと同期していないため、table-config を再生成する必要があります。この機能の詳細については、次のリンクを参照してください。

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

于 2013-02-14T14:13:14.823 に答える