首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >房间关系匹配多列

房间关系匹配多列
EN

Stack Overflow用户
提问于 2018-07-23 17:33:02
回答 1查看 1.5K关注 0票数 14

我有一个实体之间的关系,应该是这样的:

概述->有许多->类别->有许多->事务

如果Category.overviewId == Overview.id,则应将类别包括在概述中。我非常确定我应该能够通过@Relation注解来实现这一点,例如:

代码语言:javascript
复制
@Relation(parentColumn = 'id', entityColumn = 'overviewId')
List<Category> categories;

然后,在类别实体中,我希望包括Transaction.overviewId == Category.overviewId && Transaction.categoryId == Category.categoryId中的任何事务。这是我正在努力解决的部分,因为@Relation注释似乎只能考虑1列。我想我想要这样的东西:

代码语言:javascript
复制
@Relation(parentColumn = {'overviewId','categoryId'}, entityColumn = {'overviewId','categoryId'})
List<Transaction> transactions;

但这似乎不是一种有效的做事方式。有人知道我应该如何做到这一点吗?我想最终我希望能够观察到每当相关的Overview、Category或Transaction更新时都会更新的查询,因此在Overview中嵌入类别和事务似乎是最好的方法,但如果有更好的方法,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 23:06:03

有同样的问题,想出了@Transaction

代码语言:javascript
复制
@Query("SELECT * FROM store_table WHERE userId = :userId AND storeId = :storeId")
fun getStore(storeId:String, userId:String): StoreDb?

@Query("SELECT * FROM product_table WHERE userId = :userId AND storeId = :storeId")
fun getProducts(storeId:String, userId:String):List<ProdusctsDb>

@Transaction
fun getStoreWithProducts(storeId:String, userId:String): StoreWithProductsDb{
    val storeDb: StoreDb = getStore(storeId,userId) ?: return null
    val products = getProducts(storeId,userId)
    return  StoreWithProductsDb(storeDb, products)
}

其中StoreWithProductsDb是通常的数据类

代码语言:javascript
复制
data class StoreWithProductsDb(val storeDb: StoreDb, val products: List<ProductsDb>)

附言:只是采用的例子,所有的名字都是随机的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51475631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档