如何为这个json构建morphia模型?

时间:2016-08-06 14:26:40

标签: mongodb morphia

我正在开发应用程序,我必须存储工作周计划。 workSchedule由7天(数组)组成,每天包含数组,此数组包含另一个数组,其中我存储startTime和endTime,从午夜开始。

我尝试了List<List<Integer[]>> workSchedule

使用List<List<List<Integer>>> workSchedule

使用Integer[][][] workSchedule

但没有任何效果。通常会说BasicBSONList can only work with numeric keys

如何构建正确的模型?请,任何建议。

更新。

在mongodb的模型下面。

{
  "_id": {
    "$oid": "579dfa208f9c311d327e478a"
  },
  "status": "approved",
  "ratingMinus": 0,
  "ratingPlus": 0,
  "lat": 55.767166134693,
  "lng": 37.59573578997,
  "address": "Большая Садовая улица, дом 16, сооружение 1",
  "type": "public",
  "price": 0,
  "isFree": true,
  "workSchedule": [
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ],
    [
      [
        28800,
        72000
      ]
    ]
  ],
  "updatedAt": {
    "$date": "2016-07-31T13:16:16.454Z"
  },
  "createdAt": {
    "$date": "2016-07-31T13:16:16.454Z"
  },
  "__v": 0,
  "location": [
    37.59573578997,
    55.767166134693
  ]
}

这里有JAVA属性:

@Id
private ObjectId id;
private String status;
private int ratingMinus;
private int ratingPlus;
private String address;
@Reference
private WcUser createdBy;
@Reference
private WcUser updatedBy;
private Date createdAt;
private Date updatedAt;
private String routeDetails;
private String type;
private List<List<List<Integer>>> workSchedule;
private boolean isFree;
private int price;
@Indexed(IndexDirection.GEO2D)
private Double[] location;

我尝试从mongo获取数据如下:

List<WcInstance> wcs = mongoConnectionManager
        .getDatastore()
        .find(WcInstance.class)
        .field("location")
        .near(longitude, latitude, 3 / 111.12)
        .limit(100)
        .asList();

如果我评论workSchedule属性,它就有效,如果没有,则无效。

错误:

java.lang.RuntimeException: java.lang.IllegalArgumentException: BasicBSONList can only work with numeric keys, not: [size]

1 个答案:

答案 0 :(得分:0)

List<List<List<Integer>>> workSchedule应该有效。请发布实际的模型类以及您尝试使用它的方式。你可能缺少一些细微差别。