转载至:http://www.jianshu.com/p/ba87a9ee6001
最近再写一个Restful API的小例子,遇到这样一个问题,在Spring Boot 下使用CrudRepository,总是提示如下错误:
Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'userprofil0_.real_name' in 'field list'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:536)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115)
at com.mysql.cj.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:1983)
at com.mysql.cj.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1826)
at com.mysql.cj.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1923)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)
... 76 more
而我的Bean这样写的:
@Entity
@Table(name = "eb_user_profile")
public class UserProfile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "UserID")
private Long UserID;
@Column(name = "UserName")
private String UserName;
@Column(name = "RealName")
private String RealName;
public UserProfile() { }
public UserProfile(String userName, String realName) {
UserName = userName;
RealName = realName;
}
getter...
setter...
}
于是spring.jpa.show-sql = true
打印SQL如下
Hibernate: select userprofil0_.userid as userid1_0_0_, userprofil0_.real_name as real_nam2_0_0_, userprofil0_.user_name as user_nam3_0_0_ from eb_user_profile userprofil0_ where userprofil0_.userid=?
啊咧咧,注解明明写好了,为何映射的SQL还是带下划线的?
最后发动老夫的望气之术,终于在茫茫网海中找到这样一段文字:
addUnderscores 用于处理 当表名和列名在Java的种规则符合 UserNameTable(表)和 userNameColumn(列),就会被解析为user_name_table 和 user_name_column ,具体return的处理的是propertyToColumnName。 but呢,如果一旦配置了这个规则,(spring +jpa配置如下:
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy)
就会忽略了注释中的@Column中的name,其实这个name地方就是为了映射数据库字段,结果配置了这个就不care了。
http://blog.csdn.net/dracotianlong/article/details/27834143
因为配置了org.hibernate.cfg.ImprovedNamingStrategy 策略,因此当列名符合驼峰命名法时,注解就无效了。
解决方案:
- 将
@Column
中的值变为小写。 - 继承
ImprovedNamingStrategy
自定义策略。
作者:naiive 链接:http://www.jianshu.com/p/ba87a9ee6001 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
Spring Data JPA中文文档1.4.3
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
'SpringDataJPA从入门到精通'分为12章 内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观...
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习
2017 spring data jpa+spring4.2+springmvc+hibernate4.3 maven环境intellij idea增删改查实例
spring data jpa最新版本1.8.0,包含了spring-data-jpa-1.8.0.RELEASE.jar,spring-data-jpa-1.8.0.RELEASE-javadoc.jar以及 spring-data-jpa-1.8.0.RELEASE-sources.jar文档和源代码
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...
技术架构:SpringMVC3+Spring3.1.2+Spring Data JPA+Maven 声明:该应用仅仅是技术研究:Spring Data JPA的配置和常见api的使用&maven构建项目,其他技术不在此研究 内涵sql和各种Spring Data JPA测试和案例,导入&...
Spring Data JPA Demo
NULL 博文链接:https://mixo44.iteye.com/blog/1797079
ZK集成Spring和JPA增删改查DEMO
Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架...
仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot...
3. 与Spring全家桶结合紧密: 4. 成熟的框架和架构 常⻅的SQL性能问题,如何优雅处理? 2. 错综复杂的关联关系如何应对? 3. 万恶的LazyException本质是什么? 4. ⾼并发⾼性能要求的API服务要⽤JPA吗?
Spring Data JPA中文文档[1.4.3].zip
基于_Struts_2+Spring+JPA_框架的WEB_应用
第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 包括:代码示例JpaRepository提供的CRUD功能,还有翻页、排序等功能 第三章:JpaRepository的查询 ...
可以实现本地保存
其实spring data jpa比mybatis更好用.zip 全方位介绍jpa
该案例使用SpringBoot 整合了SPringData JPA,使用SpringData 开发简化了Dao层的开发量,简化了数据访问,使得持久化更加简单 !