2

私はAndroidの初心者です。DBFlowアプリケーションでデータベースをマッピングするときに問題が発生します。

まず、データベース スキーマについて説明します。

コレクション ( msg_keyINTEGER PRIMARY KEY 、message_idINTEGER 、...)

メッセージ( message_id: INTEGER PRIMARY KEY, ...)

そして、同じパッケージの私のJavaコード、

Messageクラス:

@Table(database = MyDatabase.class, name = Constants.TBL_MESSAGE, allFields = true)
public class Message extends BaseModel {

    @PrimaryKey
    int message_id;
    String description;
}

Collectionクラス:

@Table(database = MyDatabase.class, name = Constants.TBL_COLLECTION, allFields = true)
public class Collection extends BaseModel {
    @Column(setterName = "setMsg_key", getterName = "getMsg_key")
    @PrimaryKey
    private int msg_key;

    @Column(setterName = "setMessage_id", getterName = "getMessage_id")
    @ForeignKey(references = {
            @ForeignKeyReference(columnType = Integer.class,
                    columnName = Constants.TBL_COL_MSG,
                    foreignKeyColumnName = Constants.TBL_MSG_ID)}
            , saveForeignKeyModel = false)
    private Message message_id;

    public void setMessage_id(Message message_id) {
        this.message_id = message_id;
    }

    public void setMsg_key(int msg_key) {
        this.msg_key = msg_key;
    }

    public int getMsg_key() {
        return msg_key;
    }

    public Message getMessage_id() {
        return message_id;
    }
}

DBFlowドキュメントとして、

_Adapter クラスがアクセスする必要があるため、すべてのフィールドは public または package private である必要があります。注: パッケージのプライベート フィールドは、DBFlow がそれらに到達するために必要なアクセス メソッドを生成するため、同じパッケージ内にある必要はありません。

または、{name} という名前の列に get{Name}() および set{Name}(columnType) メソッドを指定した場合のみ非公開。これは構成できます。

しかし、アプリケーションをビルドすると、Androidスタジオはエラーをスローします

エラー: 比較できない型: int と<null>

次にgenerated code、DBFlow でチェックし、その比較 int と null を認識します。

ここに画像の説明を入力

バグかどうかわかりませんDBFlowが、どこかで構成が欠落しているか間違っていますか? 提案/解決策を教えてください。

ありがとう!

============= アップデート =============

DBFlow 3.0.0 beta3 を使用しています

4

0 に答える 0