2014-03-04 72 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

相關問題