当前位置: 首页 > 知识库问答 >
问题:

Android Room Persistence库TypeConverter未知问题

南宫凯康
2023-03-14

我很难将我的实体保存到房间持久性数据库中。据我所知,RPL(RoomPersistenceLibrary)将只接受基元类型,因此我需要使用Typeconverters将我的两个字段:Calendar MstartDateCalendar MendTime转换为字符串(这两个文件都用于设置开始和结束日期--每次创建WeekViewEvent,请参见构造函数)。

你知道我可能做错了什么吗?提前感谢您的任何帮助!:)

WeekViewEvent.class:

@Entity
public class WeekViewEvent implements Serializable {

@NonNull
@PrimaryKey
private long mId;
private String mName;
private String mLocation;
private int mColor;
private boolean mAllDay;
private Shader mShader;
private String Identifier;

@TypeConverters({WeekViewEventCONVERTER.class})
private Calendar mStartTime;
@TypeConverters({WeekViewEventCONVERTER.class})
private Calendar mEndTime;


public WeekViewEvent(long id, String name, String location, String identifier, int color, int startYear, int startMonth, int startDay, int startHour, int startMinute, int endYear, int endMonth, int endDay, int endHour, int endMinute) {
    this.mId = id;
    this.mStartTime = Calendar.getInstance();
    this.mStartTime.set(Calendar.YEAR, startYear);
    this.mStartTime.set(Calendar.MONTH, startMonth - 1);
    this.mStartTime.set(Calendar.DAY_OF_MONTH, startDay);
    this.mStartTime.set(Calendar.HOUR_OF_DAY, startHour);
    this.mStartTime.set(Calendar.MINUTE, startMinute);
    this.mEndTime = Calendar.getInstance();
    this.mEndTime.set(Calendar.YEAR, endYear);
    this.mEndTime.set(Calendar.MONTH, endMonth - 1);
    this.mEndTime.set(Calendar.DAY_OF_MONTH, endDay);
    this.mEndTime.set(Calendar.HOUR_OF_DAY, endHour);
    this.mEndTime.set(Calendar.MINUTE, endMinute);
    this.mName = name;
    this.Identifier = identifier;
    this.mLocation = location;
    this.mColor = color;}
...
}
 @TypeConverter
public static Calendar fromString (String value){
    Type calendarType = new TypeToken<Calendar>() {}.getType();
    return new Gson().fromJson(value, calendarType);
}

@TypeConverter
public static String fromCalendar (Calendar mStartTime){
    Gson gson = new Gson();
    String json = gson.toJson(mStartTime);
    return json;
}

}

和WeekViewEventDAO:

@Dao
public interface WeekViewEventDAO {

@Insert(onConflict = OnConflictStrategy.REPLACE)
public long insertWeekViewEvent (WeekViewEvent event);

@Update(onConflict = OnConflictStrategy.REPLACE)
public void updateWeekViewEvent (WeekViewEvent event);

@Delete
public void deleteWeekViewEvent (WeekViewEvent event);

@Query("DELETE FROM WeekViewEvent")
public void deleteAllWeekViewEvents();

@Query("SELECT * FROM WeekViewEvent")
WeekViewEvent getWeekViewEvent();

@Query("SELECT * FROM WeekViewEvent")
public List<WeekViewEvent> getAllWeekVieweventsList();}

共有1个答案

谭高峯
2023-03-14

我认为您的问题是您没有用于此字段的类型转换器:

private Shader mShader;

尝试添加@ignore将其标记为非持久性。

 类似资料:
  • 未知问题 未知问题记录机器人没能回答的用户问题,用户可以进行批量操作,还可以为这些问题配置成业务问答,提高机器人问题回答率。 如下图可以讲未知问题配置成业务问答:

  • 我有一个问题,房间不能识别我的转换器。错误:

  • 我知道其他人在GWT编译方面有问题,但在这种情况下,我感到茫然。我使用的是GWT2.6.1和相同版本的gwt-maven-plugin2.6.1 首先,GWT和/或SmartGWT是否支持JDK1.8,或者目前只支持1.7?我使用的是JDK1.7,但最终还是想尝试一下1.8。 其次,当我在eclipse中进行maven构建时,我得到了这个错误...然而,当我从GWT eclipse插件进行GWT编

  • 我在一起使用mapstruct和lombok时遇到了一些问题: 我的实体和实体类: EntityMapper: 在这种配置中,它会导致编译时错误。所以我试图注释掉@映射注释。它编译了,但它将所有属性映射为空。MapSTRtEntityMapper生成的实现: 我找到了几个关于注释处理器的答案,但看看我的构建。gradle文件: 如果我编译时不使用@Mapping注解,然后使用这个注解运行,有时它会

  • 当我尝试发送一个GET请求到我的Spring Boot应用程序时,我有这个错误,我不知道我错过了什么! 我有了这个数据库,并在Eclipse中创建了JPA实体和关系,相应地为Spring Boot项目安装了STS(Spring Tool Suite)。 portata.java Ristorante.java Tipocucina.java 我错过了什么???

  • 问题内容: 我正在使用JDBC和它的新功能。但我不断收到此运行时异常: 这是给定的代码 如何使此代码起作用?我只是JDBC的初学者。 对于上面的代码;PASS =“ passowrd”,USER =“ root” 我在通过此站点修复的端口上遇到了问题 非常感谢 问题答案: 请在mysql数据库中检查数据库名称“ kholofedb ”是否存在 我想你还没有创造 请检查一次(如果没有创建)及其相关表

  • 错误:任务“:app:TransformClassesWithJarmergingForDebug”执行失败。例外:java.util.zip.zipException:重复条目:com/google/android/gms/maps/googlemapoptions.class Gradle sync启动Gradle sync完成执行任务:[:app:GenerateDebugSources,:

  • 问题内容: 我尝试运行以下代码。顺便说一句,我是python和sklearn的新手。 其中y是0和1的np.ndarray 我收到以下信息: 文件“ C:\ Anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ logistic.py”,行> 1174,适合check_classification_targets(y) 文件“ C:\