springdatajpa解决postgresql数据库字段驼峰命名问题

为了满足其他服务需求,数据库字段使用驼峰命名,但是在执行sql时发现字段被自动转成了下划线命名,如deviceId,被转成了device_id,但数据库字段为deviceId

解决方法:

网上的解决方法如下

配置文件加上一下配置:

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

然后然后配置注解@Column使用

复制代码
@Column(name = "deviceId")

查看执行的sql

select ap1_0.id,ap1_0.deviceId from device ap1_0 where ap1_0.id=?

发现执行的sql确实被转成了驼峰命名,但仍然报错

Hibernate: select ap1_0.id,ap1_0.deviceId from device ap1_0 where ap1_0.id=?

2024-08-22 10:29:47.046 WARN 16260 --- [ntContainer#0-1] SQL Error: 0, SQLState: 42703

2024-08-22 10:29:47.046 ERROR 16260 --- [ntContainer#0-1] ERROR: column ap1_0.deviceid does not exist

建议:Perhaps you meant to reference the column "ap1_0.deviceId".

于是想到了pgsql是大小写不敏感的,执行的sql会自动转成小写

所以,最终解决方案是加上上述配置,注解改成以下写法

复制代码
@Column(name = "\"deviceId\"")

ok,结束,如果本文能帮助到你,点个赞吧~

相关推荐
合作小小程序员小小店1 分钟前
桌面开发,食堂卡管理系统开发,基于C#,winform,mysql数据库
数据库·mysql·c#
多敲代码防脱发1 分钟前
初识Spring-Cloud——集群与分布式
java·spring boot·spring
O***Z6162 分钟前
HeidiSQL导入与导出数据
java
毕设源码-朱学姐3 分钟前
【开题答辩全过程】以 老年公寓信息管理系统为例,包含答辩的问题和答案
java·spring boot
GoodStudyAndDayDayUp4 分钟前
WIN11安装配置验证java\maven
java·开发语言·maven
o***11144 分钟前
【MySQL】MySQL库的操作
android·数据库·mysql
一 乐5 分钟前
游戏账号交易|基于Springboot+vue的游戏账号交易系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·游戏
合作小小程序员小小店6 分钟前
桌面开发,物业管理系统开发,基于C#,winform,mysql数据库
开发语言·数据库·sql·mysql·microsoft·c#
程序员-周李斌7 分钟前
LinkedList 源码深度分析(基于 JDK 8)
java·开发语言·数据结构·list
西岭千秋雪_7 分钟前
Kafka服务端日志梳理
java·分布式·zookeeper·kafka