###前提・実現したいこと
AndroidでRealmを利用したデータベース設計を考えています。
以下のような設計をしています。
CompanyData.kt
1open class CompanyData( 2 @PrimaryKey open var name: String = "", 3 // CompanyDataは複数のPlanDataを持つ 4 open var plan: RealmList<PlanData> = RealmList() 5): RealmObject()
PlanData.kt
1open class PlanData( 2 @PrimaryKey open var id: String = UUID.randomUUID().toString(), 3 // プランのタイプ。A、B、Cのいずれか 4 open var type: String = "", 5 // プランの金額 6 open var price: Int = 0 7): RealmObject()
やりたいことは、PlanDataのtypeがAかつplaceが1000以下のPlanを持つCompanyDataのnameを取得することです。
以下のクエリで取得を試みています。
Query.kt
1Realm.getDefaultInstance().where(CompanyData::class.java) 2 .equalTo("plan.type", "A") 3 .findAll() 4 .where() 5 .lessThanOrEqualTo("plan.price",1000)
###発生している問題・エラーメッセージ
上記のクエリでは正しいデータが取得できません。
例えば、以下のようなデータだとします
CompanyA
PlanList
type | price |
---|---|
A | 800 |
B | 1100 |
C | 1300 |
CompanyB
PlanList
type | price |
---|---|
A | 1500 |
B | 800 |
C | 1100 |
期待する結果はCompanyAのみのはずですが、CompanyBも検索結果でかえってきてしまいます。
###試したこと
Realmのドキュメントを読みましたが、
明確な答えはわかりませんでした。
クエリが間違っているのかと思いますが、ご教示いただければと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。