3

ORMLite を使用して、これら 2 つのクラス間で多対多の関係を作成するには、次のようにします。

@DatabaseTable(tableName = "test1")
public class Test1 {
    @ForeignCollectionField
    private ForeignCollection<Test2> test2Collection;
}

@DatabaseTable(tableName = "test2")
public class Test2 {
    @ForeignCollectionField
    private ForeignCollection<Test1> test1Collection;
}

テーブルの作成時にORMLiteがこのクラス間の外部キーについて知らないという問題に直面しています..

この関係を作成するには、次のForeignDatabaseFieldように各クラスにシングルを追加する必要がありますか?

@DatabaseTable(tableName = "test1")
public class Test1 {
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private Test2 test2;
    @ForeignCollectionField
    private ForeignCollection<Test2> test2Collection;
}
@DatabaseTable(tableName = "test2")
public class Test2 {
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private Test1 test1;
    @ForeignCollectionField
    private ForeignCollection<Test1> test2Collection;
}

変なやり方に思えませんか?

4

1 に答える 1

3

この関係を作成するには、次のように各クラスに単一の ForeignDatabaseField を追加する必要があります。

多対多の関係でオブジェクトを関連付ける最良の方法は、「結合テーブル」を使用することです。あなたの場合、名前付きの3番目のテーブルTest1Test2Joinか何かがあります。

@DatabaseTable(tableName = "test1test2join")
public class Test1Test2Join {
    @DatabaseField(generatedId = true)
    private long id;
    @DatabaseField(foreign = true)
    private Test1 test1;
    @DatabaseField(foreign = true)
    private Test test2;
}

詳細については、多対多の例を参照してください。

于 2013-07-17T13:44:08.070 に答える