相关疑难解决方法(0)

房间数据库具有一对一的关系

我有2个实体,硬币和CoinRevenue.

基本上,硬币以其他货币持有美元价格.

例如,带符号EUR的硬币,值为1.0356

@Entity(tableName = "coin")
data class Coin(
        @field:PrimaryKey(autoGenerate = false)
        var id: String = "",
        var symbol: String = "",
        var pricInUsd: Float = 0f)
Run Code Online (Sandbox Code Playgroud)

CoinRevenue是一个实体,我用它来保存用户拥有的特定硬币的硬币数量.例如,CoinRevenue与Coin Entity有关,EUR符号和金额为1000.

@Entity(tableName = "coinRevenue")
    data class CoinRevenueNew(
            @field:PrimaryKey(autoGenerate = true)
            var id: Int = 0,
            var coin: Coin? = null,
            var amount: Float = 0f)
Run Code Online (Sandbox Code Playgroud)

现在我想从数据库中获取CoinRevenue并从数据库中获取更新的Coin.

例如,我用硬币保存了硬币(EUR,1.0253),而不是使用该硬币保存了CoinRevenue.

之后我用(EUR,2.522)更新了Coin我希望CoinRevenue中的Coin对象也会更新.

我知道@Embedded只是将内部objet字段作为列添加到同一个父对象.当我使用关系时,我必须使用List或Set.但我在CoinRevenue里总是有1枚硬币.

我的硬币DA:

@Query("select * from coin order by rank")
fun getAllCoins(): Flowable<List<CoinDB>>

@Query("select * from coin where rank = 1")
fun getFirstCoin(): Maybe<CoinDB>

@Query("select …
Run Code Online (Sandbox Code Playgroud)

database android entity android-room

12
推荐指数
3
解决办法
8910
查看次数

在Room中创建Generic DAO接口时,"参数的类型必须是使用@Entity注释的类"

我正在使用Room架构组件来实现持久性.我创建了通用DAO接口以避免样板代码. Room Pro Tips

但是我的代码没有编译说"Error:(21,19)error:参数的类型必须是用@Entity或它的集合/数组注释的类." 对于通用类T.

interface BaseDao<T> {

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(T... entity);

@Update
void update(T entity);

@Delete
void delete(T entity);
}

@Dao
public abstract class ReasonDao implements BaseDao<ReasonDao> {

   @Query("SELECT * from Reason")
   abstract public List<Reason> getReasons();

}
Run Code Online (Sandbox Code Playgroud)

这里有什么我想念的吗?它是这样工作在这里

java android persistence dao android-room

9
推荐指数
6
解决办法
4731
查看次数

标签 统计

android ×2

android-room ×2

dao ×1

database ×1

entity ×1

java ×1

persistence ×1