Spring Data Cassandra命名策略



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-使用站点目标

最新更新