我正在尝试将一些自定义对象作为 blob 存储在 SqlLite db 中。该对象是扩展模型的类的字段。所有其他字段(原始类型)在数据库中成功运行,但自定义字段 - 它始终为空。
@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();
}
}
当我查询数据库时,我得到了这个特定字段“Contact”始终为空的对象。问题可能出在哪里?我是否需要为我的对象指定哪个是 TypeSerializer?或者我创建的 TypeSerializer 的实现是错误的?