android - OrmLite、日历和时间戳

标签 android calendar timestamp ormlite

我在使用 android 中的 java 字段进行某些 OrmLite 映射时遇到问题。

1) 我在 java 类中有 Calendar 类型,在 SQLlite 中定义为 TimeStamp 的相同字段,当我运行方法 findAll() 时,我得到以下异常:

ORMLite can't store unknown class class java.util.Calendar for field
     'Start'. Serializable fields must specify dataType=DataType.SERIALIZABLE

如果我使用 setDataType(DataType.SERIALIZABLE); 我会收到此错误:

java.sql.SQLException: Could not read serialized object from byte array: [50, 48,

我也尝试过使用 DataType.TIME_STAMP 但后来我收到了这个错误:

Field class java.util.Calendar for field FieldType:name=Start,class=PeriodTest is
     not valid for type com.j256.ormlite.field.types.TimeStampType@416f9ea0,
     maybe should be class java.sql.Timestamp

2) 我对 TimeStamp (DataType.TIME_STAMP) java 类有同样的问题。例如:

E/AndroidRuntime(14662): java.lang.Error: java.sql.SQLException:
     Could not assign object 'Mon Jul 01 09:46:12 CEST 2013' to field
     FieldType:name=timestamp

有人知道这两种情况的解决方案吗?

提前致谢,奥吉

解决方案:

-数据需要被序列化并像那样插入到数据库中以便在后面读取。 我不知道我怎么没有早点意识到这一点,但是......

最佳答案

ORMLite can't store unknown class class java.util.Calendar for field
  'Start'. Serializable fields must specify dataType=DataType.SERIALIZABLE

这是想告诉你 ORMLite本身并不知道 Calendar 类型。它不知道如何在 SQL 中表示它。

java.sql.SQLException: Could not read serialized object from byte array: [50, 48,

是的。如果您已经将数据存储在数据库中,那么存储可序列化字段不是一种选择。

Field class java.util.Calendar for field FieldType:name=Start,class=PeriodTest is
   not valid for type com.j256.ormlite.field.types.TimeStampType@416f9ea0,
   maybe should be class java.sql.Timestamp

这是说 ORMLite 无法从 Calendar 映射到 Timestamp

E/AndroidRuntime(14662): java.lang.Error: java.sql.SQLException:
   Could not assign object 'Mon Jul 01 09:46:12 CEST 2013' to field
   FieldType:name=timestamp

这听起来像是数据库中有一个字符串但是一个Timestamp 字段。如果没有完全异常,则很难知道发生了什么。

Data needs to be serialized and inserted like that into db in order to be read afterwords.

这是正确的,听起来您有自己的解决方案,但为了后代,您还可以做一些其他事情。

如果您只是使用 Calendar 来存储日期/时间,然后切换到使用其他类型(如 DateDateTime)会被推荐。您还可以编写自定义持久性。请参阅:Map PostgreSql money data type to ORMLite .

关于android - OrmLite、日历和时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396618/

相关文章:

android - Ionic 3 上的 OneSignal 推送通知 : All included players are not subscribed

java - Java 日历中一年中的某个星期有错误吗?

php - PHP 和 JS 的时间戳之间的差异

oracle - ORA-00932 : inconsistent datatypes: expected INTERVAL DAY TO SECOND got CHAR

java - 如何以自定义日期格式返回日历对象

android - 如何知道 FragmentManager 后栈是否弹出任何内容?

java - Retrofit2 GET 请求在尝试检索 JSON 数组时返回空列表

android - 如何确保我的应用仅在屏幕尺寸为 7'' + 的设备上运行?

java - 如何从我的 Android 应用程序中删除或编辑 G-calendar 中的事件?

本周的java日历周末