私はAndroidの初心者です。DBFlow
アプリケーションでデータベースをマッピングするときに問題が発生します。
まず、データベース スキーマについて説明します。
コレクション (
msg_key
INTEGER PRIMARY KEY 、message_id
INTEGER 、...)メッセージ(
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 を使用しています