Kotlin+Spring Boot Cassandra应用程序忽略了@column(“column_name”)
注释。下面的注释
@Column("order_details")
val orderDetails: String
正在映射到orderdetails
而不是order_details
。由于OrderDetails
列在表中不存在,因此会导致运行时错误。
@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
)
根据spring-data-cassandra团队提供的解决方案。数据类需要编码如下所示
@table(“order_by_customer”)数据类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
问题内容: 我对hibernate(5.1版)的命名策略有些困惑-即它更改了我的表名,我想避免这种情况。另外- 根据intelij似乎已弃用,但我找不到正确配置它的(另一种)方法。 我在application.properties中具有以下配置: 如前所述,第一个被标记为已练习。 现在我有一个实体: 表格名称是类似usaUploadTable 中的名称。 现在,当我运行我的应用程序时,我得到 表’
我对hibernates(5.1版)的命名策略有点困惑——也就是说,它改变了我的表名,我希望避免这种情况。还有-
underscored 参数 Sequelize 为模型提供了 underscored 参数. 设为 true 时,此参数会将所有属性的 field 参数设置为其名称的 snake_case 版本. 这也适用于由关联和其他自动生成的字段自动生成的外键. 例: const User = sequelize.define('task', { username: Sequelize.STRING },
我知道我可以用注释命名所有表,并为所有列提供名称,但这不是我想要的解决方案。 不幸的是,我没有找到任何匹配我的案例的策略(我知道这展示了如何创建自定义命名策略,但我不认为我的案例是不常见的),我应该为我的MariaDB配置使用什么命名策略来匹配我的案例?
编辑:application.yml
问题内容: 我正在使用postgresql数据库和spring + hibernate框架编写应用程序。 我将spring框架从4.1.5.RELEASE升级到4.2.0.RELEASE版本,并将hibernate框架从4.3.7.Final升级到了5.0.0.Final版本。 升级后,我在NamingStrategy中遇到问题。在postgresql数据库中,表列名称以小写字母用下划线分隔,在应