2015-09-06 77 views
5

我试图用ActiveAndroid存储一个Person对象。我设置这样的生日:person.setBirthdate(new java.sql.Date((new Date()).getTime()));。分配所有数据后,我打电话给person.save();ActiveAndroid:未创建日期列

我从数据库中获取与此命令所有人员的名单:new Select().from(Person.class).execute();

如果我不关闭应用程序,一切工作正常(生日总是从数据库返回正确)。但是,当我完全关闭应用程序并重新启动它时,生日日期始终为空。所有其他字段(名字,姓氏等)都是正确的。

我真的不知道为什么会发生这种情况,并希望得到一些帮助!

编辑:仔细看看我的数据库后,我发现生日日期列没有创建。我仍然不确定为什么数据在没有关闭应用时可用。

第二次编辑:我添加了一个新的列(一个字符串),它被保存到数据库,工作得很好。所以问题不是过时的数据库。所有列,但日期列被创建。

我还将日期数据类型更改为字符串。出生日期然后被保存。将其更改回日期数据类型导致原始问题再次出现。真的很奇怪......有谁知道最近怎么回事?

+0

为什么你使用java.sql.Date insteed java.util.Date? – LunaVulpo

+0

你解决了这个问题吗? – LunaVulpo

+0

我正在使用JodaTime的'DateTime'作为我的列字段类型,并且它在SQLIte数据库中没有创建列。如果你打算这样做,你必须创建一个自定义的TypeSerializer。看到这个更多的信息:https://github.com/pardom/ActiveAndroid/issues/516 –

回答

3

它应该是一些缓存问题。 保存日期尝试使用type serializer。这很容易,只需阅读this page

+0

我刚刚尝试过但没有任何更改...:/ –

+0

您尝试更新您的架构或卸载并重新安装应用程序吗? – mehdi

+0

我更新了我的模式(如果这意味着增加数据库版本号)并重新安装了应用程序,但仍然无法正常工作... –