我已经使用了SQL引擎和一些noSQL引擎以及indexdb,并且可以在不定义外键或其他内容的情况下跨数个表抓取数据。
我的问题是,是否可以进行查询以在Realm中跨对象表刮取数据而不在结构中定义任何特殊关系?为了更好地表达自己,我将发布我想要用Realm实现的示例代码,以便您可以帮助我。
使用dexie,indexdb包装器
实现 db.quote_items.where('quote_id').equals(quote_id).then(function(a){
db.products.where('id').equals(quote_id.product_id).then(function(){
list.push({'id': a.id, 'product_name':a.product_name, 'product_code': a.product_code, 'quantity':a.quantity, 'tax':a.tax, 'unit_price':a.unit_price, 'val_tax':a.val_tax, 'discount_val':a.discount_val, 'gross_total':a.gross_total, 'details ':b.details });
}).catch(function (e) { console.log(e); alert("Sorry, Something went wrong"); })
}).catch(function (e) { console.log(e); alert("Sorry, Something went wrong");})
在mysql中实现
SELECT quote_items.id AS id, quote_items.product_name AS product_name ...... FROM quote_items, products WHERE quote_items.quote_id = quote_id AND products.id = quotes_items.produc_id
Realm.io for Android中的预期实现
RealmResults result = realm.where(quote_items.class)
.equalTo("quote_id", quote_id).equalTo("quote.product_id", quote_id).equalTo("product.product_id", "quotes.itemkey").findAll()
答案 0 :(得分:5)
虽然Realm是一个NoSQL数据库,但它仍然有一个模式,因此你不能在同一个查询中返回多个类。
你要求的东西可以通过一个带有共享字段的抽象超类来解决。这还没有实现,但您可以在此处跟进进度:https://github.com/realm/realm-java/issues/761
此外,JOINS并不存在于Realm中,因为它不是关系数据库,而更像是图形数据库。对其他对象的引用就像对象引用一样。您可以在此处阅读更多内容:https://realm.io/docs/java/latest/#relationships