我已经遵循了有关如何为自定义类型添加 TypeConverters 的房间文档,但我仍然从我的实体类中收到错误消息。我想简单地将Category枚举转换为 a,String以便房间数据库了解如何存储它。下面,每个Exercise都有一个类别,这就是发生错误的地方。这是我的课程:转换器public class Converter { @TypeConverter public static String fromCategoryToString(Category category) { if (category == null) return null; return category.toString(); }}类别public enum Category { EXERCISE("Exercise"), REST("Rest"), COUNTDOWN("Countdown"); private final String text; Category(final String text) { this.text = text; } @Override public String toString() { return text; }}锻炼。为简洁起见,删除了 getter 和 setter。@Entity(tableName = "exercise", foreignKeys = @ForeignKey(entity = Routine.class, parentColumns = "rid", childColumns = "routineId", onDelete = ForeignKey.CASCADE), indices = {@Index(value = "name", unique = true), @Index("routineId")})public class Exercise { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "eid") private int exerciseID; @ColumnInfo(name = "category") private Category category; // error occurs here @ColumnInfo(name = "name") @NonNull private String name; @ColumnInfo(name = "routineId") private int routineId; public Exercise(Category category, @NonNull String name) { this.category = category; this.name = name; }}数据库@Database(entities = { Routine.class, Exercise.class}, version = 1)@TypeConverters({ Converter.class })public abstract class AppDatabase extends RoomDatabase { private static AppDatabase instance; private static final String dbName = "routines.db"; public abstract RoutineDao routineDao(); public abstract ExerciseDao exerciseDao(); public static AppDatabase getInstance(final Context context) { if (instance == null) { instance = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, dbName).build(); } return instance; }}
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
您还需要以相反的方式编写转换。
例如
@TypeConverter
public static Category fromStringToCategory(String category) {
if (TextUtil.isEmpty(category))
return DEFAULT_CATEGORY;
return YOUR_LOGIC_FOR_CONVERSION;
}
添加回答
举报
0/150
提交
取消