偶然发现,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策略是比较好的方式,只不过,自动映射对于兼容已有的数据表,需要注意一下。如果全新设计,大可放心使用。
Spring Boot集成JPA的Column注解命名字段无效的问题的更多相关文章
-
Spring Boot 集成 JPA 的步骤
Spring Boot 集成 JPA 的步骤 配置依赖 compile group: 'org.springframework.boot', name: 'spring-boot-starter-da ...
-
spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件
本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...
-
Spring boot 搭配 JPA 生成表注释 和 字段注释
原文地址:https://blog.csdn.net/qq_39996837/article/details/84717748 由于在数据库表反向生成过程中呢,需要通过jpa自动生成表,并且这个表必须 ...
-
Spring Boot JPA的Column Table 注解命名字段无效
@Table(name = "OrderInfo") @Entity public class OrderInfo { @Id @GeneratedValue private Lo ...
-
spring boot 集成 Mybatis,JPA
相对应MyBatis, JPA可能大家会比较陌生,它并不是一个框架,而是一组规范,其使用跟Hibernate 差不多,原理层面的东西就不多讲了,主要的是应用. Mybatis就不多说了,SSM这三个框 ...
-
Lombok安装及Spring Boot集成Lombok
文章目录 Lombok有什么用 使用Lombok时需要注意的点 Lombok的安装 spring boot集成Lombok Lombok常用注解 @NonNull @Cleanup @Getter/@ ...
-
【实验一 】Spring Boot 集成 hibernate &; JPA
转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...
-
【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
-
Spring boot data JPA数据库映射关系 : @OneToOne,@OneToMany,@ManyToMany
问题描述 在利用Spring boot data JPA进行表设计的时候,表对象之间经常存在各种映射关系,如何正确将理解的映射关系转化为代码中的映射关系是关键之处. 解决办法 概念理解 举例:在公司的 ...
随机推荐
-
@property中strong跟weak的区别
strong关键字与retain关似,用了它,引用计数自动+1,用实例更能说明一切 @property (nonatomic, strong) NSString *string1; @property ...
-
Android之ScrollView
1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 3.上述两个控件可以互相嵌套 4.滚动条的位 ...
-
将Excel中数据导入数据库(三)
上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...
-
DVB系统中PCR的生成和PCR校正
http://blog.csdn.net/chenliangming/article/details/3616720 引自<广播电视信息>2008年1月 从数字电视前端系统功能上来讲,传统 ...
-
阿里云服务器(Win 2008 R2 Standard)安装MSSM 2008 R2之1033和2052问题
最近在给租用的阿里云服务器安装Sql Server 2008 R2 Express时,遭遇下面的问题.经过几番折腾后,终于解决问题,完成安装,这里总结分享我的解决方法,希望能给遇到相同问题的小伙伴们节 ...
-
markdown 自己搞一个浏览工具
注意!`下不能有空行 `上也不能有空行 问题未解决 <!DOCTYPE html> <html lang="en"> <head> <me ...
-
Beta的计划和人员的变动
一.新的成员和组长是否重选: 刘光华:先加入的一个帅哥,乐于助人,编码基础不是很好,但是有一颗热爱学习的心,会积极主动的完成自己的任务的,一句话宣言:我们的团队是最棒的! 程志铭:做事认真负责,工作脚 ...
-
MongoDB 运维相关的命令
1.在线释放内存 use admindb.runCommand({closeAllDatabases:1}) 注:3.2 版本 已经去掉了这个命令了 2.rs.status() 查询复制集状态 3.d ...
-
java后端面试
背景:最近在找工作,但是发现每次找的时候都需要整理一些基础知识,这些点又是面试过程中经常被问到的,每次都进行整理很麻烦,所以有打算好好总结下. 转载自:https://www.cnblogs.com/ ...
-
RabbitMQ高级指南:从配置、使用到高可用集群搭建
本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...