【发布时间】:2017-12-01 00:13:34
【问题描述】:
我需要在 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 中存储此类数据的正确方法是什么?稍后我将需要查询传感器列表 创建一个传感器表并使用 sensor > 来引用传感器是否更明智?
【问题讨论】:
-
你用什么插入数据?在 CQLSH 中它工作得很好:
insert into device_sensors (device_id , sensors) VALUES ('121342', [{'1':'2','3':'4'}]); -
我正在使用 spring-boot-data-cassandra。我的实体:@Column("device_id") @PrimaryKeyColumn(name = "device_id", ordinal = 0, type = PrimaryKeyType.PARTITIONED) private UUID deviceId;私有 UUID 时间;私有 List
> 传感器;错误是:“com.datastax.driver.core.exceptions.InvalidQueryException:字符串没有验证。”