5

Morphia で多次元配列の読み取り/非整列化に問題があります。

次のクラス:

@Entity
class A {

  double[][] matrix;
}

適切にマーシャリングされ、mongodb に格納されますが、それを読み取ると、double[][] を構築できないという例外が発生します。カスタム TypeConverter を使用しようとしましたが、そのような型に対して呼び出されません。このようなメンバーを使用すると、同様の問題が発生します。

List<double[]> matrix;

配列で期待される型を morphia が把握するのに役立つ注釈は見つかりませんでした。これはまだサポートされていないと思います。助言がありますか ?

前もって感謝します。

4

1 に答える 1

1

私はまだ Morphia で多次元配列を使用したことがないので、それについて多くを語ることはできません。ただし、サポートされていないデータ型 (BigDecimal など) に対しては次のことを行いました。

  • サポートされていないデータ型を一時的なものとして定義する
  • 情報を保存するためにサポートされているデータ型を定義する
  • @PrePersist および @PostLoad を使用して、サポートされているデータ型にシリアル化/シリアル化解除します

私のコードは次のようになります。

@Transient
private BigDecimal salary;
private String salaryString;

@PrePersist
public void prePersist(){
  if(salary != null){
    this.salary = this.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
    salaryString = this.salary.toString();
  }
}

@PostLoad
public void postLoad(){
  if(salary != null){
    this.salary = this.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
    this.salary = new BigDecimal(salaryString);
  }
}
于 2011-11-29T17:12:04.597 に答える