4

以下に定義するユーザーを持つモバイル アプリケーションを作成しています。

public class UserObject extends SugarRecord<UserObject>
{
    public UUID Id;
    public String Name;
    public int DefaultSort;
    public String Username;
    public Date LastLogin;

    public UserObject()
    {

    }

    public UserObject(UUID id, String name, int defaultSort, String username, String password, Date lastLogin)
    {
        this.Id = id;
        this.Name = name;
        this.DefaultSort = defaultSort;
        this.Username = username;
        this.LastLogin = lastLogin;
    }
}

これらのユーザーは API から取得されます。ID は一意の識別子 (または C# の GUID) としてデータベースに格納されます。

users テーブルに新しいレコードを入力すると、すべて正常に動作します。

    DateTime dt = new DateTime();
    UUID newUID = UUID.randomUUID();
    UserObject newUser = new UserObject(newUID, "David", 1, "userOne", "password", dt.toDate());
    newUser.save();

ただし、値を取り戻そうとすると、エラーが発生します。

Sqlite3 データベースからクラスを読み取ることができません。フィールドID(java.util.UUID)の型を確認してください

Sugar ORM (または SQLite) は単に UUID をサポートしていないのですか? 「LastLogin」を置き換えてJoda DateTimeを試してみると、テーブルがまったく構築されないため、フィールドを作成できるように見えますが、それらを取得/保存することはできません...

4

2 に答える 2

0

Sugar ORM は、データベースからデータを取得するときに、日付オブジェクトを再度構築することはできません。データベースを見ると、おそらく文字列が格納されています (私の場合はそうで、私は JODA を使用しています)。

私の場合、データ オブジェクトの代わりに文字列を使用することで、この問題を解決しました。データベースからデータを取得した後、それらを解析する必要がありますが、 SQLite はいくつかのデータ型しかサポートしていないため、それが唯一の選択肢だと思います。

于 2016-09-06T07:57:36.850 に答える