異常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)
- 1
- 2
異常信息說明:不能解析連接池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)
- 1
- 2
- 3
異常信息說明:不能加載mysql驅動
解決思路:拷貝mysql驅動至classpath或者修改maven的pom.xml
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency>
- 1
- 2
- 3
- 4
- 5
異常3.密碼錯誤
異常信息摘要:
org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
- 1
- 2
異常信息說明:不能獲取連接
解決思路:修改mysql的密碼至正確
密碼寫錯或者connection.pasword少寫一個s字母
<property name="connection.pasword">12345</property>
- 1
- 2
異常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>
- 1
- 2
- 3
- 4
異常信息說明:url地址或者key寫錯
解決思路:修改url地址或者key
<property name="connection.url">jdbc:mysql:///hibernate</property>
- 1
異常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)
- 1
- 2
- 3
異常信息說明:映射異常,hibernate配置文件沒有加載映射文件
解決思路:在配置文件中通過mapping元素將映射文件加載進來
<mapping resource="com/jege/hibernate/single/table/User.hbm.xml" />
- 1
異常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">
- 1
- 2
- 3
- 4
- 5
異常信息說明:映射文件全類名不正確
解決思路:修改全類名
屬性package只寫包路徑,不要將類名也寫進去 <hibernate-mapping package="com.jege.hibernate.single.table"> <class name="User" table="t_user">
- 1
- 2
- 3
異常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" />
- 1
- 2
- 3
- 4
異常信息說明:映射文件屬性名不正確
解決思路:修改屬性名
<property name="username" column="name" />
- 1
異常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());
- 1
- 2
- 3
- 4
異常信息說明:load方法沒有找到對應的主鍵的實體
解決思路:使用get方法替換load,判斷返回值是否null
User user = (User) session.get(User.class, 5L); if (user != null) { System.out.println(user.getPassword()); }
引用原文:https://blog.csdn.net/je_ge/article/details/53875649
寫博客是為了記住自己容易忘記的東西,另外也是對自己工作的總結,文章可以轉載,無需版權。希望盡自己的努力,做到更好,大家一起努力進步!
如果有什么問題,歡迎大家一起探討,代碼如有問題,歡迎各位大神指正!