springBoot-JpaRepository异常

springBoot-JpaRepository异常

话不多说,直接上BUG:
第一条:在这里插入图片描述
我一看,哦,原来是SQL语法异常导致无法提取结果集,
一个不可能发生的BUG发生了,因为SQL的查询语句并不是我写的,而是JpaRepository代理的
我继续看了下去,又一个BUG
第二条:
在这里插入图片描述
这里就有意思了,异常后面的那段话,意思在表里没有找到user_name这个列,确实我的表里面没有这个字段,以下是我的数据库表和javabean在这里插入图片描述

@Data
@Entity
@Table(name = "user")
public class User {
	@javax.persistence.Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer Id;
	private String userName;
	private String gender;

	public User() {
	}
	public User(String userName, String gender) {
		this.userName = userName;
		this.gender = gender;
	}
}

没有user_name这个列是肯定的,但是想想,为什么JpaRepository代理sql语句会多出个字段呢,和user_name对应的应该是数据表里面的userName,但是为什么其他列没问题,就唯独userName变成为了user_name呢.
解答: 通过痛苦的代码底层半日游,以及几次测试,我了解到的关键点是,JpaRepository代理sql语句会自动把javabean中字段的userName转换为user_name,(字段中出现大写自动加下划线,并且改大写为小写)因此有两种解决方案,
一: 将javabean中的字段userName更改为username问题解决(sql不区分大小写)
二: 将数据库中的userName字段更改为user_name问题解决(字段匹配上了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值