0

私はアドロイドで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」ステートメントは表示されなくなりました。

私はここで何か間違ったことをしていますか?

4

1 に答える 1

3

残念ながら、現時点では、ORMLiteは他の1つのテーブルとのJOINのみをサポートしています。現時点では、マルチテーブル結合はサポートされていません。Sourcesサイトの機能リクエスト部分にアイテムを自由に追加してください。

マルチテーブル結合を実行する必要がある場合は、生のクエリ機能を使用できますが、結果を自分で解釈する必要があります。

于 2012-11-19T03:38:40.473 に答える