我有兩個實體:「訂單」和「WorkPosition」。工作位置通過訂單ID相關,這意味着我在這裏有一個toMany-Relationship。一個訂單具有「n」個工作位置,而一個工作位置始終具有一個order_id。所以有一個函數:order.getWorkPositions()。greenDao模擬加入
我現在正在做什麼: Rightnow我查詢所有訂單,然後我遍歷訂單。如果訂單具有workposition.type =「1」的工作位置。
問題是這很慢,因爲我至少有1000個訂單和更多的工作位置。
問題: 我看到「加入」功能無法正常工作,但對greenDao首頁我看到下面的查詢:
Query query = userDao.queryBuilder().where(
new StringCondition("_ID IN " +
"(SELECT USER_ID FROM USER_MESSAGE WHERE READ_FLAG = 0)").build();
我該如何使用它來加速比我的查詢?我可以將訂單作爲查詢中的返回類型嗎?或者我可以只有一個ID列表?
作爲查詢我想是這樣的:
Query<Orders> query = getDAOSession().getOrdersDao().queryBuilder()
.where(new StringCondition("?_ID IN? "+
"(SELECT * FROM Orders AS O JOIN WorkPosition AS W WHERE w.type=1)")).build();
List<Orders> orders = query.list();
我希望你能理解我的問題,如果不告訴我,我將盡力改善它:)
謝謝。實際上它的工作沒有「開」 - 陳述。我的問題是,我試圖添加兩個日期之間的查詢。我發現greenDao不需要日期本身。它希望date.getTime() – oli
@oli不過,我建議使用「on」語句和「userdao.Properties」中定義的列名一起使用。通過這種方式,您可以控制連接,並且更改模式不太可能破壞連接。最重要的是,如果您的模式更改,並且您在語句中依賴的某些列將產生編譯時錯誤,而不是運行時錯誤。 – AlexS