无法序列化自定义对象activeandroid

时间:2013-07-21 14:09:40

标签: sqlite serialization activeandroid

我正在尝试将一些自定义对象存储为SqlLite数据库中的blob。该对象是类扩展模型的字段。所有其他字段(基本类型)在数据库中成功运行,但是自定义字段 - 它始终为空。

@Table(name = "data")
public class Data extends Model {

@Column(name = "number")
private int number;

@Column(name = "blob")
private Contact blob;

...

这是我存储实体的方式

Data data = new Data(0, new Contact(id, name, number));
data.save();

以下是联系方式

public class Contact {
private String id;
private String name;
private String number;

...

我相信需要一个TypeSerializer,所以我创建了一个。

public class ContactSerializer extends TypeSerializer {

private static final String ELEMENTS_DELIMITER = ";";

@Override
public Object deserialize(Object asString) {
    String[] afterSplit = ((String) asString).split(ELEMENTS_DELIMITER);
    return new Contact(afterSplit[0], afterSplit[1], afterSplit[2]);
}

@Override
public Class<?> getDeserializedType() {
    return Contact.class;
}

@Override
public SerializedType getSerializedType() {
    return SerializedType.STRING;
}

@Override
public Object serialize(Object asContact) {
    Contact temp = (Contact) asContact;
    return temp.getId() + ELEMENTS_DELIMITER + temp.getName() + ELEMENTS_DELIMITER
            + temp.getNumber();
}

}

当我查询db时,我得到的对象具有此特定字段“Contact”始终为null。哪里可能是问题?我是否需要指定哪个是我的对象的TypeSerializer?或者我创建的TypeSerializer的实现是错误的?

1 个答案:

答案 0 :(得分:2)

您还需要扩展模型中的联系人:

@Table(name = "contact")
public class Contact extends Model{
    @Column(name = "id")
    private String id;
    @Column(name = "name")
    private String name;
    @Column(name = "number")
    private String number;
}

现在一切都应该开箱即用。回复有点迟,但也许我会帮助其他人。