如何在 Room 中使用 Joda DateTime 日期作为 id,或者如何在查询中获取日期?
How to use Joda DateTime date as id in Room, or how to get date in query?
我需要编写一个使用日期作为 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)
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
我需要编写此查询:
@Query("update DailyCount set summ = :sum where date between :startTimeOfDay and :endTimeOfDay")
fun updateCash(startTimeOfDay: DateTime, endTimeOfDay: DateTime, sum: Double)
我在这里给了一个开始和结束时间的范围。当我想在今天的 Id
中设置信息时,这种方法 returns 是正确的
我需要编写一个使用日期作为 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)
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
我需要编写此查询:
@Query("update DailyCount set summ = :sum where date between :startTimeOfDay and :endTimeOfDay")
fun updateCash(startTimeOfDay: DateTime, endTimeOfDay: DateTime, sum: Double)
我在这里给了一个开始和结束时间的范围。当我想在今天的 Id
中设置信息时,这种方法 returns 是正确的