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

相关推荐
IvorySQL4 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔5 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用5 小时前
Spring基础使用
java·后端·spring
代码什么用5 小时前
Spring对IoC的实现
数据库·spring
Su米苏5 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
码云数智-园园5 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁5 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网6 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西6 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨6 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言