摘要:在SpringBoot中使用JPA,在映射数据库的时候,假如你的数据库是按照约定进行设计的那么没有问题,如果不是按照约定的就会发生报错。

例如我数据库中有一个主键id的字段,本应该设计为【object_id】,可是去给设计成了【objectId】

一:在使用JPA时就会发生异常,其实就是因为命名不规范引起的

这是实体的映射类

1
2
3
4
5
6
7
@Entity
@Table(name = "user")
public class User implements Serializable {

@Id
@Column(name = "objectId", length = 32)
private String objectId;

首先我强调,你要确保你的数据库中的字段和colum一致,并且没有什么换行,空格这种低级错误。

然后我们调用接口后发现会报如下错误

1
Unknown column 'user0_.object_id' in 'field list'

你确认你的字段正确,没有换行,空格导致的错误的话,这里的原因只有一个:

那就是驼峰命名,即使你指定@Column的name也不起作用

解决办法

在application.properties添加jpa属性:

1
2
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

问题产生的原因就是因为JPA会自动的按照约定去进行驼峰命名,这样导致设计不规范的数据库表字段映射总是错误。