使用Morphia存储多维数组

时间:2011-11-29 14:08:15

标签: unmarshalling morphia

使用Morphia读取/解组多维数组时遇到了麻烦。

以下课程:

@Entity
class A {

  double[][] matrix;
}

被正确编组并存储在mongodb中,但是当读取它时,我得到一个异常,即无法构造double [] []。我试过使用自定义的TypeConverter,但是没有为这些类型调用它。 我在使用这样的成员时遇到的类似问题:

List<double[]> matrix;

我没有找到任何可以帮助morphia找出数组中预期类型的​​注释。 我怀疑这还不支持。 有什么建议吗?

提前致谢。

1 个答案:

答案 0 :(得分: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);
  }
}