13

我想在像这样的三个表上创建一个内部连接,例如:

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();

但是请注意,您只能使用此机制从查询构建器中获取实体。如果您想从不同的对象中获取两个描述字段,那么您仍然必须使用原始查询。

支持“原始查询”,包括Dao.queryRaw()您可以使用自己的 SQL 的方法。我怀疑你已经找到它们了。这是原始查询的文档

于 2011-09-06T12:41:22.780 回答