私のDBモデルは次のとおりです。
A.id (1 : n) B.ad_id
したがって、オブジェクトのカイエンでは、この特定の A エントリから B のすべてのエントリを返すA a
ことができます。a.getBArray()
それでも、プロパティに基づいて、このリストをフィルタリングしたいと思いますactive = 1
。
明らかに で使用できますExpression.fromString("active = 1")
がSelectQuery
、このアプローチでは、このクエリを実行する A インスタンスを関連付ける方法がわかりません。
別のアプローチは、 からすべてのエントリを取得しa.getBArray()
、 を持つものだけを検索するコードでフィルタリングすることですactive == true
。このアプローチは私見では非効率的です。
推奨事項は大歓迎です。
ありがとう、マキシム。
- 編集:
私の現在の解決策は次のとおりです(オブジェクト名はそれぞれaとbに置き換えられています):
long aId = DataObjectUtils.longPKForObject(db_a_instance);
String bSQL = "select * from b where active = 1 and a_id = " + aId;
SQLTemplate bQuery = new SQLTemplate(B.class, bSQL);
List<B> dbBs = context.performQuery(bQuery);
より良い、よりエレガントな解決策があるかどうか尋ねていますか?
ありがとう。