如何在Play Framework中保留非平凡的字段

时间:2012-09-29 08:05:07

标签: playframework-2.0 weka ebean

我试图在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存储复杂的可序列化对象?

1 个答案:

答案 0 :(得分:0)

我假设您使用JPA进行数据库访问。您可以存储,请参阅Java EE5 Tutorial

  • 用户定义的可序列化类型
  • 字节[]
  • 字节[]

即使Classifier类实现了java.io.Serializable,似乎也没有将Classifier类型保存到数据库中。我认为你应该使用byte []作为保存的模型,使用String作为分类器类型。您可以使用以下方法来查看weka如何编写和读取模型。

  • weka.core.SerializationHelper.write
  • weka.core.SerializationHelper.read

将序列化对象本身作为byte []存储在数据库中。

@Entity
@Table(name = "classifiers")
public class ClassifierData extends Model {
    @Id
    public Long id;
    public byte[] classifierSavedModel;
    public String classifierType
}