テーブル ActivityLog を作成するときに、ORM Lite でこのエラーが発生します。
10-23 04:06:32.255: E/com.timelord.dao.DatabaseHelper(1487):
Caused by: java.sql.SQLException: ORMLite can't store unknown class class
com.timelord.pojo.Category for field 'category'. Serializable fields must
specify dataType=DataType.SERIALIZABLE
これは、マルチレベルの外部キーが原因であると思われます。以下の POJO クラスからわかるように、ActivityLog には Activity があり、Activity には Category があります。
アクティビティとカテゴリは正常に機能しています。
正しいマッピングを行う方法について何か考えはありますか?
@DatabaseTable(tableName = "activityLogs")
public class AcitvityLog implements Serializable {
private static final long serialVersionUID = 1L;
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(canBeNull = false)
@DatabaseFieldForeign(foreign = true)
private Activity activity;
@DatabaseField(dataType = DataType.DATE, canBeNull = false)
private Timestamp start;
@DatabaseField(dataType = DataType.DATE, canBeNull = true)
private Timestamp end;
}
@DatabaseTable(tableName = "activities")
public class Activity extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@DatabaseField(canBeNull = false)
@DatabaseFieldForeign(foreign = true)
private Category category;
}
@DatabaseTable(tableName = "categories")
public class Category extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
}
public class BaseEntity {
@DatabaseField(generatedId = true)
private Integer id;
@DatabaseField(canBeNull = false)
private String name;
}