Cassandra存储对象列表

时间:2017-11-30 10:33:23

标签: list cassandra storage

我需要在cassandra中存储地图列表。那可能吗? 这是我的数据的json表示:

{
   "deviceId" : "261e92b8-91af-40da-8ba4-c39d821472ec",
   "sensors": [
   {
       "fieldSensorId": "sensorID",
       "name": "sensorName",
       "location": "sensor location",
       "unit": "value units",
       "notes": "notes"
   },
   {
      "fieldSensorId": "sensorID 2",
      "name": "sensorName 2",
      "location": "sensor location 2",
      "unit": "value units",
      "notes": "notes"
    }
  ]
}

CQL:

CREATE TABLE device_sensors (
    device_id text,
    sensors list<frozen <map<text,text>>>,
    time timeuuid,
    PRIMARY KEY (device_id)
)

仍然无法插入任何数据。在cassandra中存储这些数据的正确方法是什么?稍后我将需要查询传感器列表 创建传感器表并使用传感器可能更明智吗?参考传感器?

1 个答案:

答案 0 :(得分:1)

我认为问题是您在CQL中将devide_id声明为text,但您在源代码中声明了它UUID,并且在尝试时Spring将其映射到相应的类型插入数据。您可以尝试将@CassandraType(type = Name.TEXT)添加到deviceId声明中吗?您还可以删除@Column声明 - @PrimaryKeyColumn就足够了。

或者您可以更改表格定义,将device_id声明为UUID