Jpa使用杂记之数据库字段命名方式

在使用jpa时遇到一个报错困扰了我许久,报错的大致意思是找不到查询的字段。

在网上搜了一圈之后大致有两种原因:一是实体类中未添加相应的注解;二是实体类中的字段名可能写错了,和数据库对不上。

 

我首先采用了原因一的解决方案,添加了注解(但其实没有必要,因为新版本中该注解是默认的,一般不用写),结果并没有用。

然后我又对比了数据库和实体类的字段名,并没有对不上,而且我是通过数据库逆向生成的实体类,也不应该出错。

再后来我测试对另一个实体类进行测试,竟然不报错,我百思不得其解。都是逆向生成的,凭什么你可以不报错???!!!

 

再到后来我想起我搜到的一个帮助,出了提供解决方法外,最后还带了一句“如果你认真查看报错信息的话,应该早就解决了”。虽然他的解决方法没有起作用,但我记住了这句话。我决定再仔细看看报错信息(我一般很少看报错信息,都是直接复制搜索,这确实是一个不好的习惯)。终于在jpa的sql语句中发现了倪端。

 

真正的报错原因:拉回正题,在jpa的sql语句中,我发现查询的字段并不是我实体类当中所写的字段,或者说并不完全是。这里就要说到数据库的字段命名方式了。我都是采用的和代码中相同的“驼峰命名”,但是数据库中是不区分大小写的,所以并不适合驼峰命名,“Abc”和“abc”其实是同一个字段,Jpa也是考虑到了这一点,所以在查询数据库时,会自动将实体类中驼峰命名的字段改为用下划线隔开的的方式。例如“managerName”==>“manager_name”。上面说到的不报错的实体类就是因为它的字段名比较短,只有一个单词,所以不会报错。

 

总结:1、要多看报错信息;2、数据库的字段命名中应该使用下划线隔开的方式命名。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值