`
sd8089730
  • 浏览: 258017 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Spring data jpa 列明老是 带“_”而实际不是

阅读更多

转载至: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 策略,因此当列名符合驼峰命名法时,注解就无效了。

解决方案:

  1. @Column中的值变为小写。
  2. 继承ImprovedNamingStrategy 自定义策略。
作者:naiive
链接:http://www.jianshu.com/p/ba87a9ee6001
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分享到:
评论

相关推荐

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    10. **Elasticsearch 集成**:虽然不是 Spring Data JPA 的核心功能,但 Spring Data 项目包含了对 Elasticsearch 的支持,使得存储和检索大数据变得更加容易。 通过阅读《Spring Data JPA 中文文档[1.4.3]》PDF ...

    Spring Data JPA API(Spring Data JPA 开发文档).CHM

    Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。

    Spring Data JPA 笔记

    Spring Data JPA 是一个强大的框架,它简化...总之,Spring Data JPA是Spring生态中的强大工具,它将数据库操作变得简单而高效。理解和掌握这些核心概念和特性,对于任何Java开发者来说,都是提升开发效率的关键步骤。

    filesystem-master_java_springdatajpa_springboot_hibernate_文件服务器_

    标题 "filesystem-master_java_springdatajpa_springboot_hibernate_文件服务器_" 暗示了一个项目,它涉及使用Java技术栈,特别是Spring Data JPA、Spring Boot和Hibernate,来构建一个文件服务器。这个项目可能重点...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring Data JPA和JPA的结合使用,使得开发人员能够专注于业务逻辑,而不必过于关注底层的数据访问细节。它们降低了与数据库交互的复杂性,提高了开发效率,并且提供了良好的可扩展性和灵活性。 文档"spring注解...

    Spring Data JPA的优点和难点.pdf

    然而,尽管Spring Data JPA带来了诸多便利,但在实际使用中也会遇到一些挑战和难点: 1. **SQL性能问题**: - Spring Data JPA虽然简化了查询编写,但可能导致生成的SQL不够优化,尤其是在处理大数据量或复杂查询...

    2017 spring data jpa+spring4.2+springmvc+hibernate4.3 maven环境intellij idea增删改查实例

    在本项目中,我们探索的是一个基于2017年技术栈的Java Web应用程序实例,主要涉及Spring Data JPA、Spring 4.2、Spring MVC和Hibernate 4.3。这些技术是Java开发中的核心组件,尤其在企业级应用开发中广泛使用。下面...

    Spring Data JPA从入门到精通

    'SpringDataJPA从入门到精通'分为12章 内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观...

    spring data jpa 教程

    Spring Data JPA 简化了 JPA(Java Persistence API)的开发,通过约定优于配置的方式,让开发者能够更加专注于业务逻辑而不是数据访问层的实现细节。使用 Spring Data JPA,可以快速搭建起一个基本的数据访问层,...

    Spring Data JPA Demo

    Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互...同时,了解Spring Data JPA 如何与Hibernate 配合工作,以及如何处理复杂的查询和事务管理,这些都是在实际开发中非常重要的技能。

    其实spring data jpa比mybatis更好用.zip_JPA mybatis

    标题"其实spring data jpa比mybatis更好用.zip_JPA mybatis"指出本主题将探讨Spring Data JPA与MyBatis之间的比较,并暗示在某些方面,Spring Data JPA可能更为优越。描述中提到"全方位介绍jpa",表明内容将深入讲解...

    Spring Data JPA.zip

    在黑马程序员的 JavaEE 57期课程中,学员们不仅会学习这些基础知识,还会通过实际项目来加深对 Spring Data JPA 的理解和应用,包括如何在多表关联、事务处理、数据验证等方面进行实战操作。掌握 Spring Data JPA ...

    springdatajpa.pdf

    在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。SpringDataJPA框架作为SpringData的一部分,为我们提供了数据访问的高级特性,并为不同的数据存储技术提供了一致的编程模型...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    spring data jpa + spring + json demo

    【标题】"spring data jpa + spring + json demo"揭示了这个项目是关于使用Spring Data JPA、Spring框架以及JSON处理的一个示例应用。Spring Data JPA是Spring框架的一个模块,它简化了JPA(Java Persistence API)...

    Spring Data JPA中文文档[1.4.3].zip

    13. **最佳实践**:了解在实际项目中使用Spring Data JPA时的一些推荐做法,避免常见的陷阱和问题。 14. **扩展和自定义**:如果需要进一步定制行为,如自定义Repository实现、扩展Querydsl支持或者使用MongoDB等...

    Spring Boot整合SpringDataJPA

    Spring Data JPA是Spring生态系统中的一个重要组件,它为开发者提供了与JPA(Java Persistence API)交互的简化接口,极大地提高了数据访问的效率。本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,...

    springBoot整合springData JPA

    Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring Framework的一个模块,专门用于简化JPA(Java Persistence API)的使用,提供了一种声明式的方式来操作数据库。 首先,我们需要了解Spring ...

Global site tag (gtag.js) - Google Analytics