转载至: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 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
10. **Elasticsearch 集成**:虽然不是 Spring Data JPA 的核心功能,但 Spring Data 项目包含了对 Elasticsearch 的支持,使得存储和检索大数据变得更加容易。 通过阅读《Spring Data JPA 中文文档[1.4.3]》PDF ...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
Spring Data JPA 是一个强大的框架,它简化...总之,Spring Data JPA是Spring生态中的强大工具,它将数据库操作变得简单而高效。理解和掌握这些核心概念和特性,对于任何Java开发者来说,都是提升开发效率的关键步骤。
标题 "filesystem-master_java_springdatajpa_springboot_hibernate_文件服务器_" 暗示了一个项目,它涉及使用Java技术栈,特别是Spring Data JPA、Spring Boot和Hibernate,来构建一个文件服务器。这个项目可能重点...
Spring Data JPA和JPA的结合使用,使得开发人员能够专注于业务逻辑,而不必过于关注底层的数据访问细节。它们降低了与数据库交互的复杂性,提高了开发效率,并且提供了良好的可扩展性和灵活性。 文档"spring注解...
《Spring Data JPA从入门到精通》是一本深入解析Spring Data JPA的书籍,它以Spring Boot框架为核心,旨在帮助读者全面理解并熟练运用Spring Data JPA进行数据库操作。Spring Data JPA是Spring Framework的一个模块...
然而,尽管Spring Data JPA带来了诸多便利,但在实际使用中也会遇到一些挑战和难点: 1. **SQL性能问题**: - Spring Data JPA虽然简化了查询编写,但可能导致生成的SQL不够优化,尤其是在处理大数据量或复杂查询...
在本项目中,我们探索的是一个基于2017年技术栈的Java Web应用程序实例,主要涉及Spring Data JPA、Spring 4.2、Spring MVC和Hibernate 4.3。这些技术是Java开发中的核心组件,尤其在企业级应用开发中广泛使用。下面...
Spring Data JPA 简化了 JPA(Java Persistence API)的开发,通过约定优于配置的方式,让开发者能够更加专注于业务逻辑而不是数据访问层的实现细节。使用 Spring Data JPA,可以快速搭建起一个基本的数据访问层,...
Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互...同时,了解Spring Data JPA 如何与Hibernate 配合工作,以及如何处理复杂的查询和事务管理,这些都是在实际开发中非常重要的技能。
标题"其实spring data jpa比mybatis更好用.zip_JPA mybatis"指出本主题将探讨Spring Data JPA与MyBatis之间的比较,并暗示在某些方面,Spring Data JPA可能更为优越。描述中提到"全方位介绍jpa",表明内容将深入讲解...
在黑马程序员的 JavaEE 57期课程中,学员们不仅会学习这些基础知识,还会通过实际项目来加深对 Spring Data JPA 的理解和应用,包括如何在多表关联、事务处理、数据验证等方面进行实战操作。掌握 Spring Data JPA ...
在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。SpringDataJPA框架作为SpringData的一部分,为我们提供了数据访问的高级特性,并为不同的数据存储技术提供了一致的编程模型...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
【标题】"spring data jpa + spring + json demo"揭示了这个项目是关于使用Spring Data JPA、Spring框架以及JSON处理的一个示例应用。Spring Data JPA是Spring框架的一个模块,它简化了JPA(Java Persistence API)...
13. **最佳实践**:了解在实际项目中使用Spring Data JPA时的一些推荐做法,避免常见的陷阱和问题。 14. **扩展和自定义**:如果需要进一步定制行为,如自定义Repository实现、扩展Querydsl支持或者使用MongoDB等...
Spring Data JPA是Spring生态系统中的一个重要组件,它为开发者提供了与JPA(Java Persistence API)交互的简化接口,极大地提高了数据访问的效率。本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,...
Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring Framework的一个模块,专门用于简化JPA(Java Persistence API)的使用,提供了一种声明式的方式来操作数据库。 首先,我们需要了解Spring ...