在使用Android Room时,如果尝试使用Type Converter将自定义类转换为基本类型或String类型来进行数据库的增删改查操作,可能会发现插入成功,但查询却会返回空值。
要正确使用Type Converter,需要确保以下几点:
如下所示:
public class DateConverter {
@TypeConverter
@JvmStatic
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
}
@TypeConverter
@JvmStatic
public static Long toTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
如下所示:
@Database(entities = {Book.class}, version = 1)
@TypeConverters({DateConverter.class})
public abstract class MyDatabase extends RoomDatabase {
// Database operations...
}
如下所示:
@Query("SELECT * FROM Book WHERE publishedDate = :date")
List getBooksByDate(Date date);
这样,就可以正确地使用Type Converter进行类型转换和数据库操作了。