CustomerRefId フィールドにバインドされた CustomerBalance と Customer の 2 つのテーブルがあります。このテーブルのフィールド残高が 100 を超える CustomerBalance レコードが必要です。また、その基準を満たす特定の顧客の名前を結果に含めたいと考えています。動作する次のメソッドを作成しました!
public List<CustomerBalance> getCustomerBalanceFilter(String filterVal) {
try {
PreparedQuery<CustomerBalance> preparedQuery = mDbHelper.getCustomerBalanceDao().queryBuilder()
.where().gt(CustomerBalance.DB_COL_CUSTOMER_BALANCE, filterVal)
.prepare();
List<CustomerBalance> result = mDbHelper.getCustomerBalanceDao().query(preparedQuery);
for(CustomerBalance alert : result) {
PreparedQuery<Customer> getCustQuery = mDbHelper.getCustomerDao().queryBuilder()
.where().eq(Customer.DB_COL_CUSTOMER_REF_ID, alert.getCustomerID())
.prepare();
List<Customer> customer = mDbHelper.getCustomerDao().query(getCustQuery);
alert.setCustomer(customer.size() == 1 ? customer.get(0) : null);
}
return result;
} catch(Exception ex) {
return null;
}
}
このメソッドは機能していますが、これはそのようなクエリを作成するための最良の方法ですか? またはより適切なアプローチがありますか?