设置spring.jpa.properties.hibernate.hbm2ddl.auto=update
实体类为
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private int id;
@Column(name = "PhoneNumber")
private String phoneNumber;
@Column(name = "PetName")
private String petName;
public void setId(int id){
this.id = id;
}
public int getId(){
return this.id;
}
public void setPhoneNumber(String phoneNumber){
this.phoneNumber = phoneNumber;
}
public String getPhoneNumber(){
return this.phoneNumber;
}
public void setPetName(String petName){
this.petName = petName;
}
public String getPetName(){
return this.petName;
}
}
即使已经事先创建了表user,字段为Id(主键,自增长),PhoneNumber,PerName。
程序运行后,JPA会自动增加字段phone_number和per_name,我已经在实体类中将字段映射配置好了,为什么会自动创建新的字段,而不是匹配已经存在的字段。
如果将spring.jpa.properties.hibernate.hbm2ddl.auto值修改为validate,表结构仍然为字段为Id(主键,自增长),PhoneNumber,PerName,则报错,提示找不到相应的字段。个人认为,注解@Column(name = "PetName")映射字段过程中,会将PetName修改为pet_name,pet_name为最终字段名。可这样做不是显得很奇葩吗?
JPA @Column 字段命名 默认驼峰转换。
你非要那么搞,就去配置文件里修改hibernate 默认命名策略。
原来如此,感谢感谢。