gpt4 book ai didi

java - Android + ORMLite + java.sql.Timestamp

转载 作者:行者123 更新时间:2023-12-01 05:22:20 26 4
gpt4 key购买 nike

我有一个使用 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 更改为其他类型(例如日期),并且也可以删除此字段。

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

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

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

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

最佳答案

对此@st1ing 深感抱歉。这肯定可能是ORMLite中的一个错误。但我怀疑这可能是不兼容的。在 4.14 版本中,我们必须更改 Serialized 字段的处理方式。 Upgrade notes在线。引用:

In addition, serialized types must also now specify their dataType value. You should use DataType.SERIALIZABLE to continue to store serialized objects in the database. This will allow us to add direct support for other serialized types in the future without breaking backwards compatibility.

If you already have Serializable data (byte[] or other objects) stored in a database then you will need to add something like the following to your fields:

@DatabaseField(dataType = DataType.SERIALIZABLE)
Serializable field;

实际上,异常是试图向您提供有关如何解决问题的提示:

Serializable fields must specify dataType=DataType.SERIALIZABLE

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

关于java - Android + ORMLite + java.sql.Timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com