gpt4 book ai didi

sqlite - 无法序列化自定义对象activeandroid

转载 作者:行者123 更新时间:2023-12-03 18:57:02 25 4
gpt4 key购买 nike

我试图将一些自定义对象存储为SqlLite db中的Blob。该对象是扩展Model的类的字段。所有其他(原始类型的)字段都可以在数据库中成功进行,但是自定义字段-始终为null。

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


}

当我查询数据库时,我得到的对象具有此特定字段“联系人”始终为null。问题可能出在哪里?我是否需要指定对象的TypeSerializer?还是我创建的TypeSerializer的实现是错误的?

最佳答案

您还需要扩展来自模型的联系:

@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;
}


现在一切都应该开箱即用。做出回复有点晚了,但也许我会帮助别人。

关于sqlite - 无法序列化自定义对象activeandroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com