0
我在adroid中使用ormlite。庫似乎是非常有用的,但我有一個與QueryBuilder的問題。我會試着解釋一下這個抽象的例子。 假設我們有4個表:項目,員工,國家,ActiveProject。單個項目可以有多個員工,但員工只能在一個項目上工作。員工來自一個國家。 ActiveProject表有一行表示當前活動的項目。QueryBuilder上的ormLite join()替換了以前的join()?
現在我想列出指定國家(「en」)的所有員工,這些員工適用於當前正在進行的項目。
//retrieving Daos:
Dao<Projects, Long> projectDao = helper.getDao(Projects.class);
Dao<Employees, Long> employeeDao = helper.getDao(Employees.class);
Dao<Countries, Long> countryDao = helper.getDao(Countries.class);
Dao<ActiveProject, Long> activeProjectDao = helper.getDao(ActiveProject.class);
//retrieving QueryBuilder
projectQb = projectDao.queryBuilder();
employeeQb = employeeDao.queryBuilder();
countryQb = countryDao.queryBuilder();
activeProjectQb = activeProjectDao.queryBuilder();
//constructing query:
//add WHERE statement for country
countryQb.where().eq(Countries.NAME,"en");
employeeQb.join(countryQb);
//so far so good, when I query from employees here, I'll get all employees from "en"
//limit the results to active project only
projectQb.join(activeProjectQb);
//if I query the projectQb for all projects, I'll get only the active one - as expected.
//but here the problem starts
employeeQb.join(projectQb);
現在,employeeQb.query()將列出屬於活動項目但來自所有國家/地區的所有僱員。 「Employees-Country join」和「WHERE」語句已經消失。
我在這裏做錯了什麼?
感謝您的回答!事實上,缺乏多表連接並不是一個很大的問題。在上面的例子中,我可以簡單地檢索「en」國家的ID,並在WHERE語句中使用它:(employeeQb.where().eq(Employee.COUNTRY_ID,enCountryId)。不過,我會嘗試添加多功能作爲圖書館真是太棒了 – Ramps
我剛剛添加了代碼來支持這個@Ramps,它將在4.43。 – Gray
太棒了!很高興知道。 – Ramps