hibernate经常报的几个不起眼的错误, 都是因为不细心或者手滑了输入有误造成了
最近会经常用到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经常报的几个不起眼的错误, 都是因为不细心或者手滑了输入有误造成了的更多相关文章
- maven报错非法字符:\65279 错误
开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...
- 安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误
安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误 这个错误几个月以前解决过一次,但是到又碰到的时候,竟然完全忘记当时怎么解决的了, 看来上了年纪记忆真是越来越不行了... 解决方案很简单 ...
- ArcGIS Server注册地理数据库报machine:机器名[Oracle:(null)]错误的修改
环境介绍:本机安装了ArcGIS Server10.2,ArcGIS Desktop10.2,64位Oracle11g以及Oracle32位客户端.直连和服务连接都能成功. 问题:我要进行服务发布的时 ...
- 转:maven报错非法字符:\65279 错误
开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...
- ionic3包还原使用yarn命令执行步骤(解决ionic3懒加载报找不到 module的错误)
使用cnpm 还原ionic3.6的依赖包的时候 可以正常还原,但是使用懒加载就会报找不到 module 的错误.最简单的解决办法是删除node_modules 挂个vpn 重新执行npm insta ...
- Eclipse打开Android项目报Parsing Data for android-21 failed错误的解决办法(转载)
转载:http://segmentfault.com/blog/hongliang/1190000000739285 今天手贱,用android命令打开SDK Manager下载了最新的Android ...
- 不论报任何错误 都是网络源有问题,安装spacemacs报错的解决方式
不论报任何错误 都是网络源有问题 打开.spacemacs ### 这是原头部 (defun dotspacemacs/layers () "Configuration Layers d ...
- Tomcat报java.io.IOException: Broken pipe错误
Tomcat报java.io.IOException: Broken pipe错误,如下图: 解决方案:我的原因是因为网络策略导致出现该问题,即网络端口未启用或被限制.
- 使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误。
使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: .切 ...
随机推荐
- Python网络爬虫-requests模块(II)
有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env ...
- 通过shell进行数学计算
对于基本运算,可以使用let, $(())和$[] 对于高级运算,使用expr和bc这两个工具 [hupeng@hupeng-vm shell]$n1= [hupeng@hupeng-vm shell ...
- MySQL优化技巧之四:mysql数据库开发常见问题及优化[转]
mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...
- 【转载】webstorm-前端javascript开发神器中文教程和技巧分享
webstorm是一款前端javascript开发编辑的神器,此文介绍webstorm的中文教程和技巧分享. webstorm8.0.3中文汉化版下载:百度网盘下载:http://pan.baidu. ...
- VMware中,该如何理解桥接网络与NAT 网络模式
原创 2016年11月16日 23:26:34,原文地址如下: http://blog.csdn.net/u010801439/article/details/53193113 首先,我在VMware ...
- 安装HBase(0.9)数据库
基本知识: 1.hbase是一种基于列存储的数据库,也就是说它的一列的数据是存储在一个文件里面的,而传统的数据库存储都是一个文件存储多个行,这些行有不同的列,这些列的数据类型 不同. 2.基于HDFS ...
- Sklearn与特征工程
Scikit-learn与特征工程 “数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这句话很好的阐述了数据在机器学习中的重要性.大部分直接拿过来的数据都是特征不明显的.没有经过处理的或者说 ...
- c++官方文档-按值传递和按引用传递
#include<stdio.h> #include<iostream> #include<queue> #include<map> #include& ...
- html调用静态json例子
1.json { "current": 2, "result": "success" } 1.html <!doctype html& ...
- 《GPU高性能编程CUDA实战》附录三 关于book.h
▶ 本书中用到的公用函数放到了头文件book.h中 #ifndef __BOOK_H__ #define __BOOK_H__ #include <stdio.h> #include &l ...