Ana*_*and 2 android android-room
在Android房间关系中,是否可以使用相关表的属性来使用搜索查询。下面是我的表结构。在此,我将交易与付款和线路(交易项目)相关联。我的用户界面中有一个搜索字段,用户可以使用付款表内的付款金额进行搜索。如何形成查询来访问付款表的属性。
class TransactionWithPaymentAndLines(
@Embedded
var transactions: Transactions? = null,
@Relation(
parentColumn = "id",
entityColumn = "transactionId",
entity = Payment::class
)
var payments: List<Payment> = listOf(),
@Relation(
parentColumn = "id",
entityColumn = "transactionId",
entity = TransactionLines::class
)
var transactionLines: List<TransactionLines> = listOf()
)
Run Code Online (Sandbox Code Playgroud)
理想的方式是创建一个视图来查询多个相关表。视图使用join组合来自两个或多个表的数据。
在Android中,使用Room Persistance库,您可以创建这样的视图,然后您可以查询视图的字段。您可以这样做:
假设您有表:
用户:id、姓名、部门 ID
部门:编号、姓名
创建视图:
@DatabaseView("SELECT user.id, user.name, user.departmentId," +
"department.name AS departmentName FROM user " +
"INNER JOIN department ON user.departmentId = department.id")
data class UserDetail(
val id: Long,
val name: String?,
val departmentId: Long,
val departmentName: String?
)
Run Code Online (Sandbox Code Playgroud)
将视图添加到数据库:
@Database(entities = arrayOf(User::class),
views = arrayOf(UserDetail::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDetailDao(): UserDetailDao
}
Run Code Online (Sandbox Code Playgroud)
创建一个 DAO:
@Dao
interface UserDetailDao {
@Query("SELECT * FROM UserDetail")
fun loadAllUserDetails(): Array<UserDetail>
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用此 DAO 查询视图。
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |