Kotlin+Spring Boot Cassandra应用程序正在忽略@Column("column_name")
注释。以下注释
@Column("order_details")
val orderDetails: String
正在映射到orderdetails
而不是order_details
。由于表中不存在列orderdetails
,因此会导致运行时错误。
为什么弹簧数据Cassandra的@Column
默认情况下不映射到snake案例?即使在值被传递到@Column
映射之后,为什么它会被忽略?是否需要在应用程序属性中设置其他属性,以便弹簧数据Cassandra使用snake case进行物理映射?
@Table("order_by_customer")
data class CustomerOrder(
@PrimaryKeyColumn(name = "customer_id", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
val customerId: UUID,
@Column("order_details")
val orderDetails: String,
@Column("ordered_at")
val orderedAt: LocalDate
)
生成的插入查询INSERT INTO order_by_customer (customer_id,orderdetails,orderedat)
当PK的注释工作时,列的注释被忽略
根据spring data cassandra团队提供的分辨率。数据类别需要编码,如下所示
@Table("order_by_customer")
data class CustomerOrder(
@PrimaryKeyColumn(name = "customer_id", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
val customerId: UUID,
@field:Column("order_details")
val orderDetails: String,
@field:Column("ordered_at")
val orderedAt: LocalDate
)
https://github.com/spring-projects/spring-data-cassandra/issues/1146
https://kotlinlang.org/docs/annotations.html#annotation-使用站点目标