Spring Boot集成JPA的Column注解命名字段无效的问题
2017-07-27 10:37
549 查看
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名。
Spring Boot版本:1.5.4.release
数据表:
那么如下的映射:
会发现,数据库里增加了一个字段”user_name”,那么是否可以推测spring boot jpa使用的默认策略是ImprovedNamingStrategy?
由于测试用例的表已经存在,之前使用的是DefaultNamingStrategy,即字段名和属性名相同,也是驼峰式。
好吧,我自己关联:
有问题了,没有效果。
难道Column注解无效?尝试:
这回有效果了,有了一个新字段 “yong_hu_ming”,column注解有效果呀。
难道是userName这个单词,我再做一个字段:
重复之前的操作,依然是同样的结果。
也就是说,如果Column注解定义的字段名和属性名一样,会被忽略。奇怪的设计。
像Hibernate4一样,配置一下命名策略:
没有效果。
想起一件事,记得Hibernate5的命名策略有过调整,”spring.jpa.hibernate.naming.strategy” 没效果了:
这次有效了:
数据表里可以关联到userName字段了。
当然,ImprovedNamingStrategy策略是比较好的方式,只不过,自动映射对于兼容已有的数据表,需要注意一下。如果全新设计,大可放心使用。
Spring Boot版本:1.5.4.release
数据表:
id int, userName varchar(50)
那么如下的映射:
@Data @Entity @Table(name="t_users") @NoArgsConstructor @AllArgsConstructor @Accessors(chain=true) public class User { @Id @GeneratedValue private Integer id; private String userName; }
会发现,数据库里增加了一个字段”user_name”,那么是否可以推测spring boot jpa使用的默认策略是ImprovedNamingStrategy?
由于测试用例的表已经存在,之前使用的是DefaultNamingStrategy,即字段名和属性名相同,也是驼峰式。
好吧,我自己关联:
@Data @Entity @Table(name="t_users") @NoArgsConstructor @AllArgsConstructor @Accessors(chain=true) public class User { @Id @GeneratedValue private Integer id; @Column(name="userName") private String userName; }
有问题了,没有效果。
难道Column注解无效?尝试:
@Column(name="yong_hu_ming") private String userName;
这回有效果了,有了一个新字段 “yong_hu_ming”,column注解有效果呀。
难道是userName这个单词,我再做一个字段:
private String passWord;
重复之前的操作,依然是同样的结果。
也就是说,如果Column注解定义的字段名和属性名一样,会被忽略。奇怪的设计。
像Hibernate4一样,配置一下命名策略:
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.DefaultNamingStrategy
没有效果。
想起一件事,记得Hibernate5的命名策略有过调整,”spring.jpa.hibernate.naming.strategy” 没效果了:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
这次有效了:
@Column(name="userName") private String userName;
数据表里可以关联到userName字段了。
当然,ImprovedNamingStrategy策略是比较好的方式,只不过,自动映射对于兼容已有的数据表,需要注意一下。如果全新设计,大可放心使用。
相关文章推荐
- Spring Boot集成JPA的Column注解命名字段无效的问题
- Spring Boot集成JPA的Column注解命名字段无效的问题
- Spring Data JPA @Column 注解无效 打出的语句有下划线
- SpringBoot入门-17(springboot集成mybatis注解形式实现ID自动增长)
- spring boot JPA 使用(二)常见注解说明
- spring boot集成mybatis,启动报无法创建dataSource问题
- spring注解与xml同时使用:bean命名问题及冲突
- MyBatis配合spring事务处理注解无效的问题
- Spring Boot如何让Web API自动生成文档,并解决swagger-annotations的API注解description属性废弃的问题
- spring-boot 集成jpa 持久层
- Spring Boot集成MyBatis——注解方式
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
- 使用Spring Data Jpa 遇到 数据库字段以 from 开头,分页查询失败的问题
- SpringBoot入门-16(springboot集成mybatis注解形式)
- Spring Boot(六):Spring Boot 集成 hibernate & JPA
- springboot+springdatajpa 数据库命名
- SpringBoot入门-20(springboot集成mybatis注解形式properties配置,利用@Provider实现动态SQL)
- springboot 学习之集成JPA
- IDEA+Gradle+SpringBoot+SpringDataJPA+lambok(lombok有点问题)(一)
- ElasticSearch与Spring Boot集成问题