我需要编写一个使用日期作为id的应用程序,而且我必须能够仅通过比较日期来进行更新
@Entity
data class DailyCount(@PrimaryKey
var date:DateTime,
var summ: Double = 0.0)
这是DAO
@Query("update DailyCount set summ = :sum where date = :today")
fun updateCash(today: DateTime, sum: Double)
我要这样做:
@Entity
data class DailyCount(@PrimaryKey
var date:Date,//JodaTime containing only date
var summ: Double = 0.0)
或者这样:
@Query("update DailyCount set summ = :sum where date.today = :dateArg.today")
fun updateCash(dateArg: DateTime, sum: Double)
答案 0 :(得分:2)
Room不知道如何将主字段DateTime
保存到数据库中。
您需要编写一个TypeConverter。
public class TypeConverter {
private static Gson gson = new Gson();
@TypeConverter
public static DateTime stringToDate(String data) {
Type type = new TypeToken<DateTime>() {
}.getType();
return gson.fromJson(data, type);
}
@TypeConverter
public static String dateToString(DateTime dateTime) {
return gson.toJson(dateTime);
}
}
然后注释您的主键
@PrimaryKey
@TypeConverters(TypeConverter::class.java)
var date:DateTime
答案 1 :(得分:0)
我需要编写此查询:
@Query("update DailyCount set summ = :sum where date between :startTimeOfDay and :endTimeOfDay")
fun updateCash(startTimeOfDay: DateTime, endTimeOfDay: DateTime, sum: Double)
我在这里给出了开始时间和结束时间的范围。当我想在今天的ID中设置信息时,此方法返回true