我试图在Play Framework(2.03)中使用Ebeans来保留复杂的对象。特别是,我创建了一个包含weka.classifier.Classifier类型字段的类(Weka是一个流行的机器学习库 - 请参阅http://weka.sourceforge.net/doc/weka/classifiers/Classifier.html)。分类器实现了Serializeable,所以我希望我可以使用像
这样的东西@Entity
@Table(name = "classifiers")
public class ClassifierData extends Model {
@Id
public Long id;
public Classifier classifier;
}
但是,Evolutions脚本建议使用以下数据库结构:
create table classifiers (
id bigint auto_increment not null,
constraint pk_classifiers primary key (id))
)
换句话说,它忽略了分类器类型的字段。
(如果有任何不同,数据库是MySQL)
如何使用Ebean / Evolutions / PlayFramework存储复杂的可序列化对象?
答案 0 :(得分:0)
我假设您使用JPA进行数据库访问。您可以存储,请参阅Java EE5 Tutorial
即使Classifier类实现了java.io.Serializable,似乎也没有将Classifier类型保存到数据库中。我认为你应该使用byte []作为保存的模型,使用String作为分类器类型。您可以使用以下方法来查看weka如何编写和读取模型。
将序列化对象本身作为byte []存储在数据库中。
@Entity
@Table(name = "classifiers")
public class ClassifierData extends Model {
@Id
public Long id;
public byte[] classifierSavedModel;
public String classifierType
}