为了满足其他服务需求,数据库字段使用驼峰命名,但是在执行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,结束,如果本文能帮助到你,点个赞吧~