【发布时间】:2012-04-19 01:49:11
【问题描述】:
我有一个使用 ORMLite 的 Android 项目。一切正常,但对于数据库中的某些字段,它使用java.sql.Timestamp 作为字段类型。它在我之前使用的 ORMLite 4.10 上运行良好。但是现在我需要更新ORMLite,并且有问题..
当我将 ORMLite 更新到新版本并运行它时,应用程序抛出异常:
W/System.err( 615): java.sql.SQLException: ORMLite can't store unknown class
class java.sql.Timestamp for field 'createDate'.
Serializable fields must specify dataType=DataType.SERIALIZABLE
之前createDate 字段没有dataType 参数。但是当我添加它时,错误并没有修复,应用程序也抛出了这个异常:(。项目已经在市场上,所以我不能将 dataType 更改为其他类型(如 Date),也可以删除这个字段。
我应该在较新的 ORMLite 上为时间戳使用什么?还是ORMLite bug?
更新: 通过将时间戳类型更改为可序列化类型来修复它。现在代码如下所示:
@DatabaseField(dataType = DataType.SERIALIZABLE)
public Serializable createDate;
public Timestamp getCreateDate()
{
return (Timestamp)createDate;
}
【问题讨论】:
-
为了后代,您应该不必必须这样做
Serializablehack。您应该能够拥有任何实现Serializable的类型。
标签: java android sqlite ormlite