关于Hibernate中null id的问题

前段时间,在做一个模拟项目来练习SSH(spring mvc + spring + hibernate)的时候,前台提交数据给后台的时候,后台老是报org.hibernate.AssertionFailure: null id in xxx.xx.xx的异常,我从网上也搜索了很多答案,最终都没有解决我的问题,但是,从网上搜索的结果来看,总结下,其实出现这个问题,并不表示id一定是null,网上有人总结了以下三种情况:

1,null id这个问题时,有可能是字段里用到了数据库的关键字了.(尤其注意这个describe);
2,如果数据库里设置了某个字段值不为null,而你保存的时候就设置了为null,也会报这个异常的;
3,数据库字段与映射文件的字段不一致时。

但是,我经常了很多遍,发现上面3个答案都和我的项目不一样,,后来,我把catch到的异常打印出来看了下,后台居然报密码字段长度不符合要求的问题,想了下,我后台用了hibernate-validator的校验框架,密码长度设置为校验密码不能超过15位,但是,问题出来了,我前台提交的数据,到后台经过MD5摘要算法加密后,就变成了32位的字符串,已经超过15位了,所以在调用hibernate的save()方法保存对象时出错,后来去仔细研究下hibernate-validator,原来这个校验框架,会在save()方法之前再校验一遍各个字段是否符合要求,原先我以为hibernate-validator只是在spring mvc的controller中校验一遍而已,没想到在保存到数据库之前还会再校验一遍。

所以,总结一下,出现null id这个问题,是有多种情况的,需要我们去追踪异常,找出问题所在。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值