Android中的复杂对象映射

时间:2018-08-10 15:47:54

标签: java android orm android-room

我正在null持久性库中涉猎,我有一个通过val(function)解析而来的对象:

$(this).val(function(_, currVal){
    return parseFloat(currVal).toFixed(2);
});

ClusterStatus Android Room的示例(为简便起见,省略了getter和setter方法),以表明JSON并没有帮助:

@Entity
public class Cluster {
  @PrimaryKey
  private int id;
  private boolean is_up;
  private ClusterStatus status;
  private ClusterLoad load;
  private List<Server> servers = null;
  private UserQueries user_queries;
}

我是否将所有这些内部Object映射为单独的TypeConverter? 如何正确映射public class ClusterStatus { private boolean isOnline; private String name; private int upTime; } 中的Objects? (我已经阅读了文档,但不知道为什么注释按原样进行) 也许您可以建议我其他一些ORM,它可以更好地处理这些关系?

1 个答案:

答案 0 :(得分:0)

  

使用TypeConverters

制作一个TypeConverter类,如下所示:

(此示例用于日期,您可以类似地为其他对象创建

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();
    }
}

在RoomDatabase类中添加TypeConverter,如下所示:

@Database(entities = {TaskEntry.class}, version = 1, exportSchema = false)
@TypeConverters(DateConverter.class)
public abstract class AppDatabase extends RoomDatabase 
{

...
...

}
  

官方文档: