13

たとえば、次のような3つのテーブルに内部結合を作成します。

SELECT C.Description, D.ItemDescription
  FROM OrderDetailStatement AS D 
 INNER JOIN OrderHeaderStatement AS H 
    ON H.OrderHeaderStatementRefID = D.OrderHeaderStatementRefID 
 INNER JOIN customers AS C 
    ON H.CustomerRefID = C.CustomerRefID
 WHERE (D.MixedValue > 1000)

少し混乱していますが、ウォークスルーを教えていただけますか?

前もって感謝します

4

1 に答える 1

36

ORMLiteは、単純なJOINステートメントをサポートするようになりました。次のようなことができます。

// start the order header query
QueryBuilder<OrderHeader, Integer> orderHeaderQb = orderHeaderDao.queryBuilder();
QueryBuilder<Customer, Integer> customerQb = customerDao.queryBuilder();
// join with the order query
orderHeaderQb.join(customerQb);
// start the order statement query
QueryBuilder<OrderStatement, Integer> orderStatementQb =
    orderStatementDao.queryBuilder();
orderStatementQb.where().gt("mixedvalue", 100);
// join with the order-header query
orderStatementQb.join(orderHeaderQb);
List<OrderStatement> orderStatementQb.query();

ただし、このメカニズムを使用してクエリビルダーからエンティティを取得することしかできないことに注意してください。異なるオブジェクトから2つの説明フィールドを取得する場合でも、rawクエリを使用する必要があります。

Dao.queryRaw()独自のSQLを使用できるメソッドを含む「生のクエリ」がサポートされています。あなたはすでにそれらを見つけたと思います。生のクエリのドキュメントは次のとおりです。

于 2011-09-06T12:41:22.780 に答える