2015-09-06 11 views
5

ActiveAndroidでPersonオブジェクトを保存しようとしています。私はこのような誕生日を設定した:person.setBirthdate(new java.sql.Date((new Date()).getTime()));。すべてのデータを割り当てたら、私はperson.save();と呼んでいます。ActiveAndroid:日付列が作成されていません

私は、このコマンドを使用して、データベースからすべての人のリストを得る:new Select().from(Person.class).execute();

私はアプリのすべてが正常に動作閉じないと(誕生日は、常にデータベースから正しく返されます)。しかし、私は完全にアプリケーションを閉じて、それを再起動すると、生年月日は常にnullです。その他のフィールド(姓、名字など)はすべて正しいです。

私は本当になぜこれが起こっているのかわかりませんし、いくつかの助けに感謝します!

EDIT:私のデータベースを詳しく見てみると、birthdate-columnは作成されていないことがわかりました。私はまだアプリケーションを閉じていないときにデータが利用可能であるかどうかまだわかりません。

第2 EDIT:新しい列(文字列)を追加しました。この列はデータベースに保存され、正常に動作します。したがって、問題は古いデータベースではありません。日付列を除くすべての列が作成されます。

また、日付データ型を文字列に変更しました。誕生日は保存されました。 Dateデータ型に戻すと、元の問題が再び発生しました。本当に不思議なこと...誰も何が起こっているのか知っていますか?

+0

なぜjava.sql.Date instute 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

スキーマを更新しました(データベースバージョン番号を増やすことを意味する)場合は、アプリケーションを再インストールしましたが、まだ動作していません... –

関連する問題