2014-03-04 71 views
2

使用greenDAO发电机使用:greenDAO - Date类型,返回1 /月/ 1970年

entity.addDateProperty("date").notNull(); 

我插入值:'二〇一三年十月三十〇日',当我检查我的数据库我有那里的价值。 我检查这个值与此查询:

select datetime(date) from myTable; 

,并返回: 2013年10月10日00:00:00

现在在Android中,当我尝试检索这个值怎么做(每行):

myTable.getDate(); 

它总是返回01/01/1970

我发现了什么(但可能不是这个问题的原因):

  1. 我确实在我的代码一些调试,我发现,类myTableDao.java,通过greenDAO产生的,在方法公共无效readEntity(光标的光标,History_Job实体,诠释偏移)从光标返回值 “2013”​​:

    entity.setDate(新java.util.Date(cursor.getLong(偏移+ 1) ));

  2. 仍在myTableDao.java中,方法createTable()我有这个字段声明为整数。

    ... “ '日期' INTEGER NOT NULL,” + // 1:日期 ...

我做得不对的财产DATE,或者是在一个错误greenDAO试图使用这种类型的字段?

+0

我也面临同样的问题,你有没有找到任何解决方案呢? –

回答

0

GreenDao始终以该特定格式返回Date。你可以称它为一个错误。

你可以看到这里的代码

https://github.com/greenrobot/greenDAO

你可以做的是

  • 叉GreenDao从here
  • 添加的方法setDateFormat(字符串格式)和也有助于他人。 小号QLite Date Datatypes here.

    SQLite的专卖店在三种格式的日期TEXT,REAL的

查看doc和INTEGER所以它的所有关于GreenDao方法,其返回日期给你。你可以修改它。

2

GreenDao在实体中使用Java Date对象,并将它们的Date.getTime()(time-in-millis-since-epoch)值存储为SQLite INTEGER。如果您正确使用它,这两种方式都很好。我不知道你为什么手动插入日期 - 这违背了使用ORM库的目的。

+0

即时插入此值使用外部.sql文件。如果我的应用程序是从头开始安装的,我希望我的数据库中已有一些值,为此我有一个外部sql文件填充我的数据库。 – Bugdr0id

+0

任何人都知道为什么GreenDAO将日期转换为整数,而SQLite支持DateTime类型? – Hiep

相关问题