2017-11-15 9 views
0

私はアプリのデータベースに保存するには、以下の構造:エンティティのオブジェクト参照を処理する方法は?

@Entity 
public class Project{ 
    @primaryKey 
    String id; 
    String name; 
    [...] 
    Country country; 
    [...] 
} 

をそして、私の国のエンティティは次のようになります。

私の質問に今
@Entity 
public class Country { 
    @PrimaryKey 
    private String id; 
    private String name; 
    private String pk; 
} 

:どのように私はルームとの関係を知って作るのですか国とプロジェクトエンティティ

答えて

1

ルームでは、エンティティとして国にしたい場合は、エンティティにPOJOクラスをembeddことができますが、それは、単一のテーブルにフラット化されますか、エンティティを入れ子にしていることができませんcounty_idをProjectエンティティに格納し、それを外部キーとして索引付けする必要があります。埋め込みフィールド上

より:https://developer.android.com/reference/android/arch/persistence/room/ForeignKey.html

+0

私が念頭に置いていたのForeignKeyを持つ一部、あまりにも:外部キーのhttps://developer.android.com/reference/android/arch/persistence/room/Embedded.html

より。しかし、私はどのように国家実体に移住するでしょうか?特に、カントリークラスはプロジェクトIDについてどのように知っていますか? 私の場合、JSONにはさまざまな情報やネストされた配列などがあります。そして、MapperはEntityクラスを再帰的に移入します。 たぶん私が紛失している小さなものが1つあります... – ACgamerDC

+0

まず、ProjectDaoを使用してProjectエンティティにデータを入力してから、プロジェクトオブジェクトのcountry_idを抽出し、そのIDを使用してCountryオブジェクトを設定します。また、両方のテーブルからデータを抽出するPOJOクラスを作成することもできます。ルームで入れ子にされたエンティティが許可されない理由を理解するには、次のURLを読んでください:https://developer.android.com/training/data-storage/room/referencing-data.html#understand-no-object-references –

+1

ありがとうございます!私はあなたの答えに慣れると思います。 – ACgamerDC

関連する問題