Android ORMLite不支持要映射的GregorianCalendar
我将使用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
@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日期的转换值
@DatabaseField(dataType = DataType.SERIALIZABLE)
private GregorianCalendar fechaNacimiento;
这是一个旧的答案,但我仍然想补充一点:使用
DataType.SERIALIZABLE
可以持久化数据。但是您将无法对字段进行比较(例如,选择具有给定日期的记录)