Spring Data Cassandra 命名策略。

3
Kotlin和Spring Boot Cassandra应用程序不遵循@Column("column_name")注释。以下是该注释。
@Column("order_details")
val orderDetails: String

该列被映射到orderdetails而不是order_details。由于表中不存在orderdetails列,导致运行时错误。

为什么Spring Data Cassandra的@Column默认不映射为蛇形命名法? 即使将值传递给@Column映射,为什么它也会被忽略? 在应用程序属性中是否需要设置其他属性,以便Spring Data Cassandra对物理映射使用蛇形命名法?

@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的注释工作中,列的注释被忽略了

1个回答

3

根据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-use-site-targets


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接