2016-07-19 3 views
0

内部のコレクションを持つオブジェクトをリストしようとしています。私は保存し、うまくオブジェクトを取得、私が行うときにすることができますコレクションでオブジェクトを取得する

parentRepo.findAll()

のみ最後のオブジェクトは、他の人が空のコレクションを持っている、それが記載されている子オブジェクトのしています。

親モデル

@ForeignCollectionField(eager = false) private Collection<Child> childs;

子供モデル

@DatabaseField(foreign=true,foreignAutoRefresh=true) private Parent parent;

熱心またはは、任意の違いはありません。私が子供に問い合わせをしてその親を取得した場合、私はそれも子供になることができます。私は何が欠けていますか?

編集:

私が作ったモデリングのために働いています。私の間違いは、親と子の多対多の関係が必要だということでした。私はすばやい研究をしました。私が必要とするのは、これを達成するための中間的なモデルです。私はこの質問を閉じ、私のモデル間で多対多の関係を作りようと試みます。

+0

私は多対多の関係が必要であることを認識しています。多対1ではありません。 – user1411166

答えて

2

私は多対多関係を次のように解決します。 これは進行中のプロジェクトの例です。私は準備とGlideWaxの多対多関係を持っています。それを解決するために私はあなたのクラスを使用します:準備、GlideWaxとPreparationGlideWax。 PreparationGlideWaxは、関係のテーブル間の「リンク」であるテーブルと多対多の関係を通常解決する方法と同じように、他のクラス間の接続を表します。あなたが見ることができるように、GripWaxとStructureには、多対多の関係があります。

@DatabaseTable(tableName = "preparation_glide_wax") 
public class PreparationGlideWax { 

    @DatabaseField(generatedId=true) 
    private int id; 

    @DatabaseField(canBeNull = false) 
    private int layer; 

    @DatabaseField(foreign=true, canBeNull = false) 
    private GlideWax glideWax; 

    @DatabaseField(foreign=true, canBeNull = false) 
    private Preparation preparation; 

    public PreparationGlideWax() { 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public int getLayer() { 
     return layer; 
    } 

    public void setLayer(int layer) { 
     this.layer = layer; 
    } 

    public GlideWax getGlideWax() { 
     return glideWax; 
    } 

    public void setGlideWax(GlideWax glideWax) { 
     this.glideWax = glideWax; 
    } 

    public Preparation getPreparation() { 
     return preparation; 
    } 

    public void setPreparation(Preparation preparation) { 
     this.preparation = preparation; 
    } 
PreparationGlideWax.java

@DatabaseTable(tableName = "preparations") 
public class Preparation { 

    @DatabaseField(generatedId=true) 
    private int id; 

    @ForeignCollectionField 
    private ForeignCollection<PreparationGlideWax> preparationGlideWaxes; 

    @ForeignCollectionField 
    private ForeignCollection<PreparationGripWax> preparationGripWaxes; 

    @ForeignCollectionField 
    private ForeignCollection<PreparationStructure> preparationStructures; 

    @DatabaseField(foreign=true, canBeNull = false) 
    private SkiPair skiPair; 

    @DatabaseField(foreign=true, canBeNull = false) 
    private SkiTester skiTester; 

    @DatabaseField(foreign=true) 
    private Rfid rfid; 

    @DatabaseField(foreign=true, canBeNull = false) 
    private TestSession testSession; 

    @ForeignCollectionField 
    private ForeignCollection<Measurement> measurements; 

    public Preparation() { 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public ForeignCollection<PreparationGlideWax> getPreparationGlideWaxes() { 
     return preparationGlideWaxes; 
    } 

    public void setPreparationGlideWaxes(ForeignCollection<PreparationGlideWax> preparationGlideWaxes) { 
     this.preparationGlideWaxes = preparationGlideWaxes; 
    } 

    public ForeignCollection<PreparationGripWax> getPreparationGripWaxes() { 
     return preparationGripWaxes; 
    } 

    public void setPreparationGripWaxes(ForeignCollection<PreparationGripWax> preparationGripWaxes) { 
     this.preparationGripWaxes = preparationGripWaxes; 
    } 

    public ForeignCollection<PreparationStructure> getPreparationStructures() { 
     return preparationStructures; 
    } 

    public void setPreparationStructures(ForeignCollection<PreparationStructure> preparationStructures) { 
     this.preparationStructures = preparationStructures; 
    } 

    public SkiPair getSkiPair() { 
     return skiPair; 
    } 

    public void setSkiPair(SkiPair skiPair) { 
     this.skiPair = skiPair; 
    } 

    public SkiTester getSkiTester() { 
     return skiTester; 
    } 

    public void setSkiTester(SkiTester skiTester) { 
     this.skiTester = skiTester; 
    } 

    public Rfid getRfid() { 
     return rfid; 
    } 

    public void setRfid(Rfid rfid) { 
     this.rfid = rfid; 
    } 

    public TestSession getTestSession() { 
     return testSession; 
    } 

    public void setTestSession(TestSession testSession) { 
     this.testSession = testSession; 
    } 

}

@DatabaseTable(tableName = "glide_waxes") 
public class GlideWax { 

    @DatabaseField(id = true) 
    private int id; 

    @DatabaseField(canBeNull = false) 
    private String name; 

    @DatabaseField 
    private String description; 

    @DatabaseField(canBeNull = false) 
    private int inUse; 

    @DatabaseField(foreign=true) 
    private WaxBrand waxBrand; 

    @DatabaseField(foreign=true) 
    private GlideWaxType glideWaxType; 

    @ForeignCollectionField 
    private ForeignCollection<PreparationGlideWax> preparationGlideWaxes; 

    @ForeignCollectionField 
    private ForeignCollection<TestSessionGlideWax> testSessionGlideWaxes; 

    public GlideWax() { 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public int getInUse() { 
     return inUse; 
    } 

    public void setInUse(int inUse) { 
     this.inUse = inUse; 
    } 

    public WaxBrand getWaxBrand() { 
     return waxBrand; 
    } 

    public void setWaxBrand(WaxBrand waxBrand) { 
     this.waxBrand = waxBrand; 
    } 

    public GlideWaxType getGlideWaxType() { 
     return glideWaxType; 
    } 

    public void setGlideWaxType(GlideWaxType glideWaxType) { 
     this.glideWaxType = glideWaxType; 
    } 

    public ForeignCollection<PreparationGlideWax> getPreparationGlideWaxes() { 
     return preparationGlideWaxes; 
    } 

    public void setPreparationGlideWaxes(ForeignCollection<PreparationGlideWax> preparationGlideWaxes) { 
     this.preparationGlideWaxes = preparationGlideWaxes; 
    } 

    public ForeignCollection<TestSessionGlideWax> getTestSessionGlideWaxes() { 
     return testSessionGlideWaxes; 
    } 

    public void setTestSessionGlideWaxes(ForeignCollection<TestSessionGlideWax> testSessionGlideWaxes) { 
     this.testSessionGlideWaxes = testSessionGlideWaxes; 
    } 

}

Preparation.java

GlideWax.java:ここでは、コードされ

+0

私はまさにそのように自分の問題を解決しました。私は将来の訪問者のためにあなたの答えを受け入れるでしょう。 – user1411166

0

私が編集で言ったように、私は親から子を読み込むことができます。私の問題は、私のモデル間に多対多の関係が必要だということです。私はこの答えを2日以内に受け入れます。

関連する問題