I am trying to implement DateConverterfor persisting date. This is pretty general, but I kept getting:
It is not possible to figure out how to save this field in the database. You might consider adding a type converter to it.
I double-checked and had the annotation defined at the database level as well as at the field level, it is still not able to decide that there is a certain type of type converter.
My file dependencies:
compile('android.arch.persistence.room:runtime:1.0.0-alpha3') {
exclude group: 'com.google.code.gson'
}
compile('android.arch.persistence.room:rxjava2:1.0.0-alpha3') {
exclude group: 'com.google.code.gson'
}
testCompile('android.arch.persistence.room:testing:1.0.0-alpha3') {
exclude group: 'com.google.code.gson'
}
annotationProcessor('android.arch.persistence.room:compiler:1.0.0-alpha3') {
exclude group: 'com.google.code.gson'
}
In my AppDatabase:
@Database(entities = {Location.class, Room.class, Amenity.class, UserModel.class, EventModel.class}, version =1, exportSchema = false)
@TypeConverters({DateConverter.class})
public abstract class AppDatabase extends RoomDatabase {
public abstract RoomDao getRoomDao();
public abstract LocationDao getLocationDao();
public abstract AmenityDao getAmenityDao();
public abstract UserDao getUserDao();
public abstract EventDao getEventDao();
}
Then my class DateConverterlooks like this:
public class DateConverter {
@TypeConverter
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
}
@TypeConverter
public static long toTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
My essence is as follows:
@Entity(tableName = "event")
@TypeConverters({DateConverter.class})
public class EventModel {
@PrimaryKey
private String uuid;
@ColumnInfo(name = "subject")
private String subject;
@TypeConverters({DateConverter.class})
private Date start;
@TypeConverters({DateConverter.class})
private Date end;
@ColumnInfo(name = "confirmed")
private Boolean confirmed;
public String getUuid() {return uuid;}
public void setUuid(String uuid) {this.uuid = uuid;}
public String getSubject() {return subject;}
public void setSubject(String subject) {
this.subject = subject;
}
public Date getStart() {return start;}
public void setStart(Date date) {this.start = date;}
public Date getEnd() {return end;}
public void setEnd (Date end) {
this.end = end;
}
public Boolean getConfirmed() {return confirmed;}
public void setConfirmed(Boolean confirmed) {
this.confirmed = confirmed;
}
}
Did I miss something? Thank!
source
share