web-dev-qa-db-ja.com

Android部屋-自動生成された主キー

Room for Androidおよび自動生成の主キーについてのドキュメントが見つからないという問題が発生しています。

次のようなエンティティクラスがあります。

@Entity
public class Preference {

    @PrimaryKey(autoGenerate = true)
    private int id;

    public void setId(int id) {

        this.id = id;

    }

}

これは、idを手動で設定した場合は正常に機能しますが、主キーを設定しない場合は、主キーがnullであるというエラーが発生します。自動生成されたファイルを見ると、主キーを自動インクリメントする場所はどこにもありません。

だから私の質問はこれだと思います:セッターを使用してプライベートメンバーの主キーを自動生成できますか、それともセッターで手動でキーを自動生成する必要がありますか?

11
James Lendrem

はい、メンバーがnullであるため、このコードはidメンバーを生成しません。これをIntegerオブジェクトとして設定する必要があります。その場合、メンバーがnullの場合、新しいidが自動生成されます。同じことを行うオブジェクトの初期化時に0に設定します。

私は完全に私の問題を修正する整数に設定しました。

@Entity
public class Preference {

    @PrimaryKey(autoGenerate = true)
    private Integer id;

    public void setId(Integer id) {

        this.id = id;

    }

}
9
James Lendrem