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

相关推荐
没书读了16 分钟前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·24 分钟前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic1 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王1 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
i道i1 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl1 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
武子康1 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
wqq_9922502771 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空1 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
转世成为计算机大神1 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式