SpringData :下划线的那些破事
今天写一个查询语句的时候,报错如下
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'tag_ArticleRepository':
Invocation of init method failed;
nested exception is java.lang.IllegalArgumentException:
Failed to create query method
public abstract java.util.List com.fdzang.mblog.repository.Tag_ArticleRepository.getByTag_oId(java.lang.String)!
No property tag found for type Tag_Article!
查询Repository如下
package com.fdzang.mblog.repository; import com.fdzang.mblog.pojo.Tag_Article;
import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface Tag_ArticleRepository extends JpaRepository<Tag_Article,String> {
List<Tag_Article> getByTag_oId(String tag_oId);
}
一开始想到的是肯定是下划线会出问题,因为JPA对于命名规范比较严格,于是使用@Query注解进行测试
 @Query("SELECT ta FROM tag_article ta WHERE ta.tag_oId = :tag_oId")
    List<Tag_Article> getByTag_oId(@Param("tag_oId") String tag_oId);
报错如下
tag_article is not mapped
后来经过一番挫折,终于找到错误在哪儿了
 @Query("SELECT ta FROM Tag_Article ta WHERE ta.tag_oId = :tag_oId")
    List<Tag_Article> getByTag_oId(@Param("tag_oId") String tag_oId);
在@Query注解中,应该是实体的名称,而非数据库的表名,区分大小写
这个应该是Hibernate的底层实现原因,怪自己对Hibernate不熟悉而造成的
最后,总结一下:

以上是尚硅谷佟刚老师的SpringData教程,大致意思是在SpringDate的简单查询中,下划线有着特定的意思
他的解析会优先于在类里对比属性
如本次的 getByTag_oId() 就会解析为Tag_Article.Tag.oId 而不是Tag_Article.Tag_oId
因为下划线的优先级比较高,因此会先解析下划线,而后在类里进行比较
遇到这种问题的时候我们就可以基于注解开发了,毕竟SpringData的简单查询虽然简单,但是因为死板,所以命名方面比较苛刻
当然,最好的就还是别用这该死的下划线了!哈哈
SpringData :下划线的那些破事的更多相关文章
- SpringData JPA 在解析实体类字段时驼峰自动添加下划线问题
		参考地址:https://my.oschina.net/javamaster/blog/2246886 SpringData JPA 使用的默认命名策略是: ImprovedNamingStrateg ... 
- [转]CSS 类名的单词连字符:下划线还是横杠?
		问题 CSS 类或 ID 命名时单词间连接通常有这几种写法: 驼峰式: solutionTitle.solutionDetail 用横杠连接: solution-title.solution-deta ... 
- CSS 类名的单词连字符:下划线还是连接符?
		本文的部分内容整理自我对此问题的解答: 命名 CSS 的类或 ID 时单词间如何连接? - 知乎 问题 CSS 类或 ID 命名时单词间连接通常有这几种写法: 驼峰式: solutionTitle.s ... 
- 2018-11-09 VS Code英汉词典插件v0.0.4-驼峰下划线命名
		首先, 在两天时间内安装数破百, 多谢支持. VS Code插件市场地址: 英汉词典 - Visual Studio Marketplace 开源库地址同前文: Visual Studio Code插 ... 
- ASP.NET C# 登陆窗体 限制用户名只输入字母 数字以及下划线
		文本框的输入限制,我们主要集中两个问题: 一.怎样限制用户名输入的长度? 答:设置txtName的属性 MaxLength="; (我们这里以10个字符为例) 二.怎样限制用户名只输入字母 ... 
- 如何解决jpa 要求column 名称单词必须用下划线
		[转]:http://www.jeesns.cn/article/detail/6657 先引出轮子http://blog.csdn.net/54powerman/article/details/76 ... 
- UI-切圆角、透明度、取消按钮点击高亮效果、按钮文字带下划线
		一.切UIView的某个角为圆角 如果需要将UIView的4个角全部都为圆角,做法相当简单,只需设置其Layer的cornerRadius属性即可(项目需要使用QuartzCore框架).而若要指定某 ... 
- [CSS]textarea设置下划线格式
		功能要求:1:如何实现在多行文本框textarea里面每一行下面都有一条横线 2:textarea文本框里面有一段不能删掉 实现方法:横线用背景图片来做,不动的文字用浮动层+给textarea增加t ... 
- python 里面的单下划线与双下划线的区别
		python 里面的单下划线与双下划线的区别 Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __ ... 
随机推荐
- 修改Excel脚本
			批量修改Excel TODO: 批量修改Excel 功能: 将图片防止在本地,读取excel数据,拆分数据之后根本地照片名称对比,然后上传服务器,创建新得excel. #!/usr/bin/pytho ... 
- 深入理解TCP三握四挥
			面试中被问到不少次TCP的三握四挥,今天特意来做一个总结(一些资料是很久前找的,忘了参考的链接了) 一.三次握手 首先来看一张图 最初,客户机A与服务器B的TCP进程都处于 CLOSED 状态. 然后 ... 
- js数据类型及判断数据类型
			众所周知,js有7种数据类型 1. null 2. undefined 3. boolean 4. number 5. string 6. 引用类型(object.array.function) 7. ... 
- UCOSIII内建消息队列
			使能内建消息队列 将OS_CFG_TASK_Q_EN置1 API函数 #if OS_CFG_TASK_Q_EN > 0u //删除 OS_MSG_QTY OSTaskQFlush (OS_TCB ... 
- LINQ按多列分组(Group By)并计算总和(Sum) (转载)
			来源:https://codedefault.com/2018/group-by-multiple-columns-and-sum-in-csharp .NET[C#]LINQ按多列分组(Group ... 
- 解决mysql跟php不在同一台机器上,编译安装php服务报错问题:configure: error: Cannot find MySQL header files under /application/mysql.
			在编译安装php服务时报错: configure: error: Cannot find MySQL header files under /application/mysql. Note that ... 
- python面试总结2(函数常考题和异常处理)
			python函数常考题 可变类型为参数 不能类型为参数 python如何传递参数 传递值还是引用呢?都不是.唯一支持的参数传递是共享穿参 Call by Object(Call by Object R ... 
- CentOS7.5安装python-pip报Error: Nothing to do解决方法
			python中的一个十分好用的包管理工具python-pip是我们使用python必不可少的一件工具.但是在CentOS7安装时候却报Error: Nothing to do: [root@bnsf- ... 
- 怎样制作一个 Python Egg
			from:http://liluo.org/blog/2012/08/how-to-create-python-egg/ 制作打包一个 Python Egg 并部署整个过程还蛮有意思的,下面小教程(这 ... 
- linux的virtualenv和virtualenvwarpper
			转自:https://www.cnblogs.com/qq631243523/p/10191748.html 一,介绍 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的 ... 
