2011-09-04 75 views
13

我想創建一個內部聯接三個表這樣一個例子:Ormlite內部聯接三個表

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) 

但我是一個有點困惑,請你給我一個演練?

在此先感謝

+0

請發佈您正在收到的錯誤? –

+0

我剛剛嘗試過使用純sql,因爲我仍然沒有得到它 - 如何使用ormlite ormlite編寫查詢。我只需要一個例子。任何涉及3個表的示例。 – Antonis

+1

請注意,我們在4.42 @Antonis中添加了基本的JOIN支持。我已經更新了我的答案。 – Gray

回答

34

ORMLite現在支持simple JOIN statements。你可以做類似如下:

// 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。我懷疑你已經找到了他們。這裏是docs for raw queries

+0

非常感謝你灰色!順便說一句,感謝ORMLite! – Antonis

+0

好吧,這是個好消息! – Antonis

+0

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_3.html#index-select-arguments – LuminiousAndroid