Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓&x2B;奥姆莱特&x2B;java.sql.Timestamp_Java_Android_Sqlite_Ormlite - Fatal编程技术网

安卓&x2B;奥姆莱特&x2B;java.sql.Timestamp

安卓&x2B;奥姆莱特&x2B;java.sql.Timestamp,java,android,sqlite,ormlite,Java,Android,Sqlite,Ormlite,我有一个使用ORMLite的Android项目。所有这些都可以正常工作,但对于数据库中的某些字段,它使用java.sql.Timestamp作为字段类型。它在我以前使用过的ORMLite 4.10上运行良好。但是现在我需要更新ORMLite,有一个问题。。 当我将ORMLite更新为新版本并运行它时,应用程序引发异常: W/System.err( 615): java.sql.SQLException: ORMLite can't store unknown class class j

我有一个使用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字段没有数据类型参数。但当我添加它时,错误并没有被修复,应用程序也抛出了这个异常:(.该项目已经上市,所以我不能将数据类型更改为其他类型(如Date),也可以删除此字段

我应该在较新的ORMLite上使用什么作为时间戳?或者它是ORMLite bug

更新: 通过将时间戳类型更改为可序列化类型修复了此问题。现在代码如下所示:

@DatabaseField(dataType = DataType.SERIALIZABLE)
public Serializable createDate;

public Timestamp getCreateDate()
{
    return (Timestamp)createDate;
}

对此@st1ing感到抱歉。这当然可能是中的错误,但我怀疑这可能是不兼容的。在版本4.14中,我们必须更改
可序列化
字段的处理方式。这些字段是联机的。引用:

此外,序列化类型现在还必须指定其数据类型值。您应该使用
dataType.SERIALIZABLE
继续在数据库中存储序列化对象。这将允许我们在将来添加对其他序列化类型的直接支持,而不会破坏向后兼容性

如果数据库中已经存储了
Serializable
数据(
byte[]
或其他对象),则需要在字段中添加以下内容:

实际上,异常是试图给您一个关于如何解决问题的提示:

Serializable fields must specify dataType=DataType.SERIALIZABLE

因此,请尝试将其添加到您的
Timestamp
字段中。让我知道它是否有效。

我尝试添加数据类型,但无效:(我添加了@DatabaseField(dataType=dataType.SERIALIZABLE)到字段,但它仍然从我的原始消息中抛出SQLexception。我也尝试使用其他数据类型,但没有任何帮助…对于后代,您不应该这样做
Serializable
hack。您应该能够在那里拥有实现
Serializable
的任何类型。
Serializable fields must specify dataType=DataType.SERIALIZABLE