1

我正在尝试使用 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))
)

换句话说,它忽略了 Classifier 类型的字段。

(如果有任何区别,数据库是 MySQL)

如何使用 Ebean/Evolutions/PlayFramework 存储复杂的可序列化对象?

4

1 回答 1

0

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

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

即使 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
}
于 2012-09-29T09:35:46.810 回答