私はアドロイドでormliteを使用しています。ライブラリは非常に役立つようですが、QueryBuilderに問題があります。いくつかの抽象的な例でそれを説明しようと思います。Projects、Employees、Countries、ActiveProjectの4つのテーブルがあるとします。1つのプロジェクトに複数の従業員を含めることができますが、従業員は1つのプロジェクトにしか取り組むことができません。従業員は1つの国から来ています。ActiveProjectテーブルには、現在アクティブなプロジェクトを示す1つの行があります。
次に、現在アクティブなプロジェクトで働いている、指定された国( "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()は、アクティブなプロジェクトに属するが、すべての国からのすべての従業員を一覧表示します。「従業員-国の参加」および「WHERE」ステートメントは表示されなくなりました。
私はここで何か間違ったことをしていますか?