小编典典

在三个表上的Ormlite内部联接

sql

我想在像这样的三个表上创建一个内部联接:

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)

但我有点困惑,您能给我讲解吗?

提前致谢


阅读 166

收藏
2021-03-17

共1个答案

小编典典

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的方法。我怀疑您已经找到他们了。这是原始查询文档

2021-03-17