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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Android ORMLite不支持要映射的GregorianCalendar_Android_Ormlite - Fatal编程技术网

Android ORMLite不支持要映射的GregorianCalendar

Android ORMLite不支持要映射的GregorianCalendar,android,ormlite,Android,Ormlite,我将使用ORMLite,因为我发现它非常有用。。。然而,我发现了一个缺点 我有一个类具有GregorianCalendar类型属性,映射如下: @DatabaseField(dataType = DataType.DATE_STRING) private GregorianCalendar fechaNacimiento; 当我运行我的应用程序时,它会崩溃,并在logcat中显示以下消息: 07-31 20:52:47.629:E/AndroidRuntime(11808):致命异常:main

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

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

@DatabaseField(dataType = DataType.DATE_STRING)
private GregorianCalendar fechaNacimiento;
当我运行我的应用程序时,它会崩溃,并在logcat中显示以下消息:

07-31 20:52:47.629:E/AndroidRuntime(11808):致命异常:main 2007-31 20:52:47.629:E/AndroidRuntime(11808):java.lang.RuntimeException:无法启动活动组件信息{com.joninazio.euskofest/com.joninazio.euskofest.ui.MenuPrincipalActivity}:java.lang.IllegalArgumentException:字段类java.util.Gregoriandar字段类型:name=fechacreation,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,如图所示:,它表示OrmLite的日期对应于Java的Java.util.DATE

我的问题是为什么要支持不推荐的类

您有没有不更改GregoriaCalendar的解决方案?也许将注释更改为

@DatabaseField(dataType = DataType.STRING)
?


提前谢谢你。

我用一个技巧解决了这个问题:

  • 要持久化的数据更改为日期类。更改或创建新的setter和getter
  • 创建GregorianCalendar属性,但该属性没有持久化(没有注释)
  • 修改日期属性的设置器,指定GregoriaCalendar日期的转换值

Calendar类实现了可序列化接口。GregorianCalendar扩展了Calendar

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

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

这是一个旧的答案,但我仍然想补充一点:使用
DataType.SERIALIZABLE
可以持久化数据。但是您将无法对字段进行比较(例如,选择具有给定日期的记录)