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,结束,如果本文能帮助到你,点个赞吧~

相关推荐
Empty-Filled1 分钟前
Claude Gateway 排查教程
网络·数据库·人工智能
薪火铺子8 分钟前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
ch.ju8 分钟前
Java程序设计(第3版)第二章——参数(实参 形参)
java
椰猫子9 分钟前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
海兰12 分钟前
【开篇】Spring AI、OpenClaw 和Hermes
java·人工智能·spring·spring ai
2401_8822737215 分钟前
pattern属性在旧版Android浏览器无效怎么办_手动验证补充【操作】
jvm·数据库·python
bzmK1DTbd19 分钟前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
上弦月-编程21 分钟前
指针编程:高效内存管理核心
java·数据结构·算法
罗超驿21 分钟前
双指针算法经典案例:LeetCode 283. 移动零(Java详解)
java·算法·leetcode
xieliyu.22 分钟前
Java手搓数据结构:栈与队列模拟实现
java·数据结构·学习