【发布时间】:2018-03-15 17:25:59
【问题描述】:
我有两个实体 帐户:
@Entity(tableName = "accounts",foreignKeys = arrayOf(
ForeignKey(
entity = Currency::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("currencyId"),
onDelete = ForeignKey.CASCADE
)
))
data class Account (
@PrimaryKey(autoGenerate = true)
var id:Int=0,
@ColumnInfo(name="name")
var accountName:String,
@ColumnInfo(name = "balance")
var initialBalance:Double,
var currencyId:Int,
var date:Date,
var isDefault:Boolean=true
){
constructor():this(0,"",0.0,0,Date(),false)
}
还有货币:
@Entity(tableName = "currencies")
data class Currency(
@PrimaryKey(autoGenerate = true)
var id:Int=0,
@ColumnInfo(name="name")
var currencyName:String,
@ColumnInfo(name="code")
var currencyCode:String
)
{
constructor():this(0,"","")
override fun toString(): String =currencyCode
}
我想在account 中嵌入一个currency 对象。如您所见,currencies 和 accounts 之间存在一对多关系。当我查询accounts 实体时,我也想查看它的货币。
我尝试在account 实体中添加@Embedded 字段,但它不起作用显然我误解了一些东西,该字段返回null“没有例外只是null”。如果可以将currency 对象“展平”在account 对象内,那就更好了。
所有这一切的重点是,我想显示RecyclerView 中的所有帐户及其货币信息。我现在在 @Embedded 和 @Relation 之间感到困惑,任何帮助将不胜感激。
编辑
我不知道这是否有帮助:
这是我的AccountDao:
@Dao
interface AccountDao {
@Insert
fun insertAll(items:Array<Account>)
@Update
fun update(item:Account)
@Delete
fun delete(item:Account)
@Query("select * from accounts")
fun getAll():LiveData<Array<Account>>
}
【问题讨论】:
标签: android kotlin android-room