5

テーブルA、B、C、D、Eがあり、それらの間で内部結合を行っています。
結果からの部分的なデータのみが必要です。たとえば、A.namecolumn、D.phoneNumbercolumnが必要です。

私はメソッドを使用していjoin()ます。

結果をどのように処理する必要がありますか?必要なすべてのデータを取得するために、すべてのクラスを通過する必要がありますか?はいの場合、これを行う簡単な方法は何ですか。すべてを実行するのは少し複雑に思えるからです。

結果のためだけにクラスを作成し、どういうわけか結果をそれにマップする必要がありますか?

4

1 に答える 1

8

ORMliteのドキュメントによると、結合ステートメントは、外部オブジェクトフィールドを介して接続されたテーブルでのみ使用できます。

したがって、私が見る最初のアプローチは、異物を使用して、必要なすべての値を取得することです。たとえば、テーブルAとBにクエリを実行すると

QueryBuilder<A, Integer> aqb = aDao.queryBuilder();
QueryBuilder<B, Integer> bqb = bDao.queryBuilder();
List<A> results = aqb.join(bqb).query();

for (A a : results){
    String name = a.getName();
    String phone = a.getB().getPhone();
}

一方、AクラスとBクラスは次のようになります。

....
public class A{
....
    @DatabaseField
    private String name;

    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private B b;
....        
    public B getB(){
        return b;
    }
....
    public String getName(){
        return name;
    }
}

....
public class B{
....
    @DatabaseField
    private String phone;

    public String getPhone(){
        return phone;
    }
}

このコードが正確に機能するかどうかはわかりません。アイデアを説明したかっただけです。

私が知っているように、一度に複数のテーブルを照会することはできません。

関連するORMLiteのドキュメントを参照してください。ライブラリのバージョン4.42以降、Joinステートメントがサポートされています。

于 2013-01-19T16:54:04.097 に答える