我正在使用 Spring Boot v3.2.2 和数据 Cassandra。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
我正在尝试使用嵌入式对象。这是我的实体的代码
@Table("switch_by_country_customer_department_controller")
public class Switch implements Persistable<SensorId> {
@PrimaryKey
private SensorId id;
@Embedded(onEmpty = OnEmpty.USE_EMPTY)
private DeviceInfo deviceInfo;
...
}
以及嵌入式对象类
public class DeviceInfo {
private String producer;
private String model;
private String sn;
private String mac;
...
}
一旦我尝试向该表中插入一些内容,我就会收到以下异常。这有点有趣,因为我不希望有任何名为
deviceinfo
的列,因为这是 Switch
类中嵌入对象属性的名称
Query; CQL [INSERT INTO switch_by_country_customer_department_controller (country,customer,department,sensorcode,controllercode,deviceinfo,registrationdate,activationdate) VALUES (?,?,?,?,?,?,?,?)]; Undefined column name deviceinfo in table pflanze.switch_by_country_customer_department_controller
一个有趣的事实是,自动生成的模式看起来很好,并且应用程序在这里是正确的:没有这样的字段
CREATE TABLE pflanze.switch_by_country_customer_department_controller (
country TEXT ,
customer TEXT ,
department TEXT ,
sensorcode TEXT ,
controllercode TEXT ,
activationdate TIMESTAMP ,
mac TEXT ,
model TEXT ,
producer TEXT ,
registrationdate TIMESTAMP ,
sn TEXT ,
PRIMARY KEY( (country, customer, department), sensorcode, controllercode )
)
更有趣的是,如果我为嵌入对象字段指定嵌入对象本身的任何成员的名称,如下所示:
@Table("switch_by_country_customer_department_controller")
public class Switch implements Persistable<SensorId> {
@PrimaryKey
private SensorId id;
@Embedded(onEmpty = OnEmpty.USE_EMPTY)
private DeviceInfo model;
...
}
逻辑按预期工作,所有数据都插入到右列中。
有人遇到同样的问题吗?它看起来像一个错误。有人可以确认吗?
谢谢
我面临着完全相同的问题。看起来像春天的虫子。