2016-06-17 4 views
0

私はUserとArtworkの2つのクラスを持っています。ユーザーはアートワークのコレクションを持つことができます。すべてが期待どおりに動作し、dbからオブジェクトを格納して取得できますが、コレクションの永続性を理解することはできません。ORMLiteはForeignCollectionをデータベースにどのように格納しますか?

public class User { 

    @DatabaseField(allowGeneratedIdInsert = true, generatedId = true, unique = true) 
    Long id; 

    @DatabaseField 
    String name; 

    @DatabaseField(columnName = "artwork_id", foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true) 
    Artwork masterPiece; 

    @ForeignCollectionField(eager = true) 
    Collection<Artwork> artworks; 
} 

public class Artwork { 

    @DatabaseField(allowGeneratedIdInsert = true, generatedId = true, unique = true) 
    Long id; 

    @DatabaseField 
    String name; 

    @DatabaseField 
    String file; 

    @DatabaseField(columnName = "user_id", foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true) 
    User owner; 
} 

私はアートワークをいくつか作成し、それらをコレクションに追加して、そのコレクションをaユーザに設定します。 .DB(.schema)をチェックすると、私はこれを取得:

CREATE TABLE android_metadata (locale TEXT); 
CREATE TABLE `user` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `name` VARCHAR , `artwork_id` BIGINT); 
CREATE TABLE `artwork` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `name` VARCHAR , `file` VARCHAR , `user_id` BIGINT); 

オブジェクトが正しく挿入されており、それらのためのクエリは、魔法のように動作します。私が実際に理解していないのは、コレクションのフィールドがない理由です。

答えて

1

ユーザーアートワークエンティティ一対多関係を持っています。リレーショナル・データベースでは、これは(この場合には、user_idUserを参照する列を有するArtworkとしてモデル化されます。

select * from Artwork where user_id = id

を: User(ID)に関連付けられている Artworkのコレクションを取得するには、ormliteはおおよそのように見えたクエリを実行し
関連する問題