最近会经常用到hibernate了, 也经常报错, 看着屏幕上一根大红条是非常不爽的, 这几天集合了一下经常报的错误, 整合一下放到这里, 以后再出现这个错误直接去解决就好了

1, org.hibernate.exception.ConstraintViolationException: could not execute statement

  这个是最低级的错误, 刚开始的时候设置实体类的一个私有属性id, 定义了一个int型, 后来一想不对, 改成了Integer, 但是后面的get和set方法里面的数据类型没改过来, 就报了这个错误, 但是吧这个数据类型虽然不一样, 但是都是同属于一个父类, eclipse不会给你报错的, 不过细心点还是很容易看出来. 

2, org.hibernate.MappingException: Unknown entity, (翻译过来是未知的实体)

  看字面意思也应该知道是实体类出了问题, 但是......并不是实体类的问题, 前面已经说了MappingException, 因为这个项目练习的前面需要做好几个类的映射, 在hibernate.cfg.xml配置文件里我把<mapping>标签给注释掉了, 所以这个是配置文件的问题, 又是一个非常低级的错误

3, org.hibernate.MappingException: An association from the table PRODUCT refers to an unmapped class: com.hanqi.dao.factory

  又是一个配置映射文件的问题, 当时打字太快了, 以至于<many-to-one name="factoryid" class="com.hanqi.dao.Factory">这个标签的class写错了, 本来应该是Factory, 可我却写成了factory, 系统不认识了, 所以抛出了这个异常

4, org.hibernate.InstantiationException: No default constructor for entity: com.hanqi.dao.Factory

  这个错误是我故意犯的, 因为创建实体类的时候必须要带着一个默认的空的构造方法, 我故意没写, 想看看到底会报什么错误, 结果在运行到查询语句的时候抛出了这个异常, 然后我就知道了, 原来不写个空的构造方法真的会报错

  这里有一点需要注意的, 如果在实体类当中有了那个带参数的构造方法, 这个空的构造方法必须要添加, 如果没有带参数的构造方法, 那这个默认的就不要加了

5, java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object

  这个错误是一个很诡异的错误, 代码没有错, 代码逻辑没有错, 实体类, 配置文件都没有错, 甚至eclipse和数据库的打开方式也没有错, 但是他就是报错了, 至于原因我也不知道, 不过我猜了一下, 这个错误的原因是因为我的HQL查询语句加了个select, 而且select后面只有一个字段, 如果加上两个字段或者加一个count(1)都没有问题, 所以我推断, 当select后面只有一个字段的时候, 系统会自动将返回的结果转换成一个对象, 而不是一个对象的数组了, 因为我们都知道当select后面有多个字段的时候需要遍历两次, 第一次遍历集合, 第二次遍历数组, 而select后面只有一个字段的时候, 直接用对象遍历集合就好了.

hibernate经常报的几个不起眼的错误, 都是因为不细心或者手滑了输入有误造成了的更多相关文章

  1. maven报错非法字符:\65279 错误

    开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...

  2. 安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误

    安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误 这个错误几个月以前解决过一次,但是到又碰到的时候,竟然完全忘记当时怎么解决的了, 看来上了年纪记忆真是越来越不行了... 解决方案很简单 ...

  3. ArcGIS Server注册地理数据库报machine:机器名[Oracle:(null)]错误的修改

    环境介绍:本机安装了ArcGIS Server10.2,ArcGIS Desktop10.2,64位Oracle11g以及Oracle32位客户端.直连和服务连接都能成功. 问题:我要进行服务发布的时 ...

  4. 转:maven报错非法字符:\65279 错误

    开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...

  5. ionic3包还原使用yarn命令执行步骤(解决ionic3懒加载报找不到 module的错误)

    使用cnpm 还原ionic3.6的依赖包的时候 可以正常还原,但是使用懒加载就会报找不到 module 的错误.最简单的解决办法是删除node_modules 挂个vpn 重新执行npm insta ...

  6. Eclipse打开Android项目报Parsing Data for android-21 failed错误的解决办法(转载)

    转载:http://segmentfault.com/blog/hongliang/1190000000739285 今天手贱,用android命令打开SDK Manager下载了最新的Android ...

  7. 不论报任何错误 都是网络源有问题,安装spacemacs报错的解决方式

    不论报任何错误 都是网络源有问题 打开.spacemacs ### 这是原头部 (defun dotspacemacs/layers ()   "Configuration Layers d ...

  8. Tomcat报java.io.IOException: Broken pipe错误

    Tomcat报java.io.IOException: Broken pipe错误,如下图: 解决方案:我的原因是因为网络策略导致出现该问题,即网络端口未启用或被限制.

  9. 使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误。

    使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: .切 ...

随机推荐

  1. mui plus.uploader.createUpload 上传文件服务端获取文件名中文乱码问题

    客户端上传文件需要做一次url编码:encodeURIComponent(fileName) 服务端:URL解码 var fileName = HttpUtility.UrlDecode(hfc.Fi ...

  2. spring Boot使用AOP统一处理Web请求日志记录

    1.使用spring boot实现一个拦截器 1.引入依赖: <dependency>   <groupId>org.springframework.boot</grou ...

  3. tomcat 启动超级慢

    今天在新环境里部署tomcat, 刚开始启动很快,关闭之后再启动,却发现启动日志打印到 00:25:14.144 [localhost-startStop-1] INFO  o.s.web.conte ...

  4. 阿里云内网和公网NTP服务器和其他互联网基础服务时间同步服务器

    阿里云为云服务器ECS提供了内网NTP服务器,对于阿里云以外的设备,阿里云同时提供了 公网NTP服务器,供互联网上的设备使用. 内网和公网NTP服务器 以下为阿里云提供的内网和公网NTP服务器列表. ...

  5. linux查看某个目录下有哪些文件的命令

    分别是ll和ls命令 ll /usr/local/lib ls /usr/local/lib

  6. mono部分源码解析

    一.源码结构 这里仅列举几个重要的目录:mcs:    mcs: Mono实现的基于Ecma标准的C#编译器.    class: CLI的C#级的实现.类似于Android中的Java层,应用程序看 ...

  7. java字符串分解 StringTokenizer用法

    Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokenizer可以帮你. 先看个例子: 1 public ...

  8. Java读取文件方法大全

    1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读 ...

  9. python中函数的参数

    函数参数(一) 思考一个问题,如下: 现在需要定义一个函数,这个函数能够完成2个数的加法运算,并且把结果打印出来,该怎样设计?下面的代码可以吗?有什么缺陷吗? def add2num(): a = 1 ...

  10. 应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测

    应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测 Real-Time Anomaly Detection for Streaming Analytics Subutai Ahmad SAHM ...