Hibernate 异常 集锦

异常1.Error parsing JNDI name [foo]

异常信息摘要:

org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo]
    at org.hibernate.engine.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:141)

异常信息说明:不能解析连接池foo

拷贝官方配置文件hibernate.cfg.xml的里面<session-factory name=”foo”>默认包含此foo属性配置,此异常不过是不影响运行的结果

解决思路:删除name=”foot”即可


异常2.org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver]

异常信息摘要:

org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver]
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:243)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:200)

异常信息说明:不能加载mysql驱动
解决思路:拷贝mysql驱动至classpath或者修改maven的pom.xml

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
</dependency>

异常3.密码错误

异常信息摘要:

org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

异常信息说明:不能获取连接

解决思路:修改mysql的密码至正确

密码写错或者connection.pasword少写一个s字母
<property name="connection.pasword">12345</property>

异常4.连接数据库url错误

异常信息摘要:

java.lang.UnsupportedOperationException: The application must supply JDBC connections
<property name="connection.urls">jdbc:mysql:///hibernate</property>
org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:mysql6:///hibernate]
<property name="connection.url">jdbc:mysql:///hibernate</property>

异常信息说明:url地址或者key写错

解决思路:修改url地址或者key

<property name="connection.url">jdbc:mysql:///hibernate</property>

异常5.未知实体类

异常信息摘要:

org.hibernate.MappingException: Unknown entity: com.jege.hibernate.single.table.User
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1096)
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1443)

异常信息说明:映射异常,hibernate配置文件没有加载映射文件

解决思路:在配置文件中通过mapping元素将映射文件加载进来

<mapping resource="com/jege/hibernate/single/table/User.hbm.xml" />

异常6.全类名写错

异常信息摘要:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/jege/hibernate/single/table/User.hbm.xml
Caused by: org.hibernate.MappingException: class com.jege.hibernate.single.table.User.User not found while looking for property: id
Caused by: java.lang.ClassNotFoundException: com.jege.hibernate.single.table.User.User
<hibernate-mapping package="com.jege.hibernate.single.table.User">
    <class name="User" table="t_user">

异常信息说明:映射文件全类名不正确

解决思路:修改全类名

属性package只写包路径,不要将类名也写进去
<hibernate-mapping package="com.jege.hibernate.single.table">
    <class name="User" table="t_user">

异常7.属性名写错

异常信息摘要:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/jege/hibernate/single/table/User.hbm.xml
Caused by: org.hibernate.PropertyNotFoundException: field [userUame] not found on com.jege.hibernate.single.table.User

<property name="userUame" column="name" />

异常信息说明:映射文件属性名不正确

解决思路:修改属性名

<property name="username" column="name" />

异常8.对象不存在

异常信息摘要:

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.jege.hibernate.single.table.User#5]

User user = (User)session.load(User.class, 5L);
System.out.println(user.getPassword());

异常信息说明:load方法没有找到对应的主键的实体

解决思路:使用get方法替换load,判断返回值是否null

User user = (User) session.get(User.class, 5L);
if (user != null) {
  System.out.println(user.getPassword());
}

如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。您的支持将鼓励我继续创作!谢谢!
微信打赏
支付宝打赏

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值