如何将Joda DateTime日期用作房间中的ID或如何在查询中获得日期



我需要编写一个使用日期作为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)

房间不知道如何将主字段DateTime保存到数据库中。

您需要编写一个类型逆变器。

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

我需要编写此查询:

@Query("update DailyCount set summ = :sum where date between  :startTimeOfDay and :endTimeOfDay")
fun updateCash(startTimeOfDay: DateTime, endTimeOfDay: DateTime, sum: Double)

我在这里给了一个开始和结束时间的范围。当我想在今天的ID中设置信息

时,此方法将返回true。

相关内容

  • 没有找到相关文章

最新更新