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

相关推荐
爱吃苹果的日记本7 分钟前
开学第一课
java
柠檬汁Dev13 分钟前
还在等DBA给你库?我3分钟就拉起一个高可用集群
数据库·云计算·dba
安卓开发者20 分钟前
鸿蒙NEXT应用数据持久化全面解析:从用户首选项到分布式数据库
数据库·分布式·harmonyos
渣哥38 分钟前
Java 集合框架详解:常见集合类及分类方式
java
yinke小琪1 小时前
消息队列如何保证消息顺序性?从原理到代码手把手教你
java·后端·面试
少男的脸红藏不住心事1 小时前
GD32入门到实战35--485实现OTA
数据库·mongodb·nosql
考虑考虑1 小时前
Java实现墨水屏点阵图
java·后端·java ee
_extraordinary_1 小时前
Java 多线程(一)
java·开发语言
网安Ruler1 小时前
第49天:Web开发-JavaEE应用&SpringBoot栈&模版注入&Thymeleaf&Freemarker&Velocity
java·spring boot·后端
奔跑吧邓邓子2 小时前
【Java实战㉟】Spring Boot与MyBatis:数据库交互的进阶之旅
java·spring boot·实战·mybatis·数据库交互