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 回答