Spring Boot集成JPA的Column注解命名字段无效的问题
来源:互联网 发布:淘宝里面怎么搜同款 编辑:程序博客网 时间:2024/06/03 21:43
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名。
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策略是比较好的方式,只不过,自动映射对于兼容已有的数据表,需要注意一下。如果全新设计,大可放心使用。
阅读全文
1 0
- Spring Boot集成JPA的Column注解命名字段无效的问题
- Spring Boot集成JPA的Column注解命名字段无效的问题
- JPA的Column注解总结
- JPA的Column注解总结
- JPA的Column注解总结
- JPA的@Column()注解详解
- spring 的Column注解
- spring-boot集成JPA
- Spring Boot集成JdbcTemplate的问题总结~~
- spring boot集成data-jpa
- 6.2 Spring Boot集成jpa
- Spring集成JPA的配置
- Spring boot JPA column with incorrect underscore
- Spring Data jpa 中@Column 注解解释
- Spring boot jpa 查询改变 数据库数据的问题
- spring boot JPA mySql 启动报错的问题
- Spring data JPA遇到有大写的不规范的MySQL命名字段
- Spring Boot集成Spring Data Jpa
- C#中结构体与类的区别
- 剑指offer面试题[37]-两个链表的第一个公共结点
- Mysql中Sql语句最大长度设置方法
- 快速搞定selenium grid分布式
- 《机器学习实战》书中python2.7与3.6的区别-持续更新
- Spring Boot集成JPA的Column注解命名字段无效的问题
- 灰度图像放大_matlab
- 2017多校训练赛第一场 HDU 6044 Limited Permutation(虚建笛卡尔树+超级读入挂)
- android 无线调试3
- matlab对文本文件、数据文件等的文件读取、操作等实用功能总结
- 关于 *(&a+1) 与 *(a+1)区别
- POJ 1047 Round and Round We Go
- UVA
- js数组方法