I am trying to implement a DateConverter for persisting date. It's pretty generic, but I kept getting:
Cannot figure out how to save this field into database. You can consider adding a type converter for it.
I double checked and have the annotation defined at the database level and also at the field level, it still not able to resolve that there is a type converter defined for the field.
My grade 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 DateConverter class looks 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 Entity looks like this:
@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;
}
}
Am I missing something still? Thanks!