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 に答える