ORMLite不支持GregorianCalendar映射

时间:2013-07-31 19:04:27

标签: android ormlite

我将使用ORMLite,因为我发现它非常有用......但是,我发现了一个缺点。

我有一个具有GregorianCalendar类型属性的类,其映射如下:

@DatabaseField(dataType = DataType.DATE_STRING)
private GregorianCalendar fechaNacimiento;

当我运行我的应用程序时,它会在logcat中被该消息崩溃:

  

07-31 20:52:47.629:E / AndroidRuntime(11808):致命异常:主要   07-31 20:52:47.629:E / AndroidRuntime(11808):java.lang.RuntimeException:无法启动活动ComponentInfo {com.joninazio.euskofest / com.joninazio.euskofest.ui.MenuPrincipalActivity}:java.lang.IllegalArgumentException :字段类型java.util.GregorianCalendar字段FieldType:name = fechaCreacion,class = Usuario对类型com.j256.ormlite.field.types.DateStringType@40dca268无效,可能应该是类[B]   07-31 20:52:47.629:E / AndroidRuntime(11808):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)

OrmLite似乎不支持GregorianCalendar,因为它可以在这里看到:http://ormlite.com/data_types.shtml,它表明OrmLite的DATE对应于Java的java.util.Date ...

我的问题是支持弃用课程的原因?

你有没有改变GregorianCalendar的解决方案吗?也许将注释更改为

@DatabaseField(dataType = DataType.STRING)

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我用一招来解决了这个问题:

  • 要保留的数据更改为Date类。更改或创建新的setter和getters。
  • 创建GregorianCalendar属性,但该属性未持久化(没有注释)。
  • 修改Date属性的setter,指定GregorianCalendar Date的转换值。

答案 1 :(得分:0)

Calendar类实现Serializable接口。 GregorianCalendar扩展了日历。

您可以使用以下内容声明您的字段:

@DatabaseField(dataType = DataType.SERIALIZABLE)
private GregorianCalendar fechaNacimiento;