Hibernate Dialect must be explicitly set 错误信息解决方法 .
2013-05-17 09:52
471 查看
Hibernate Dialect must be explicitly set 错误信息解决方法
编程时出现这种错误的原因如下:
1、最明显的原因,在配置文件中没有设置Dialect;
2、第二个原因,和编程时采用哪种配置文件有关系,hibernate有两种配置文件:一种是XML格式的,另一种是*.properties文件格式,你可以采用这两种配置文件中的任意一种,但是要注意的是在编写代码时是有区别的;
下面详细分析一下第二种原因:
编程时出现这种错误的原因如下:
1、最明显的原因,在配置文件中没有设置Dialect;
2、第二个原因,和编程时采用哪种配置文件有关系,hibernate有两种配置文件:一种是XML格式的,另一种是*.properties文件格式,你可以采用这两种配置文件中的任意一种,但是要注意的是在编写代码时是有区别的;
下面详细分析一下第二种原因:
hibernate.cfg.xml 内容如下 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory > <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">19861210</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>//很明显已经设置了针对MySQL的方言 <property name="hibernate.show_sql">true</property> <mapping resource="com/bjsxt/hibernate/User.hbm.xml"/>//有一个User类,该类的对象将利用hibernate的功能保存到数据库 </session-factory> </hibernate-configuration> java 业务层某个类的代码如下 package com.bjsxt.hibernate; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Client { public static void main(String[] args) { Configuration cfg = new Configuration().addClass(User.class);//注意这条语句 SessionFactory factory = cfg.buildSessionFactory(); Session session = null; try { session = factory.openSession(); //开启事务 session.beginTransaction(); User user = new User(); user.setName("张三"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); //保存数据 session.save(user); //提交事务 session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); //回滚事务 session.getTransaction().rollback(); }finally { if (session != null) { if (session.isOpen()) { //关闭session session.close(); } } } } } 这样,运行时就出现如下错误: 错误代码: log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. org.hibernate.HibernateException: Hibernate Dialect must be explicitly set at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57) at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39) at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:378) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:110) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174) at org.hibernate.service.BusinessService.<init>(BusinessService.java:15) at org.hibernate.service.BusinessService.main(BusinessService.java:28) Exception in thread "main" java.lang.NullPointerException at org.hibernate.service.BusinessService.sava(BusinessService.java:23) at org.hibernate.service.BusinessService.main(BusinessService.java:33) 意思是我没有设置数据库方言,可 hibernate.cfg.xml 明明已经设置了,原因何在呢? 原因就在于上面要你注意的红色代码,当我们采用XML文件作为配置文件的时候,定义Configuration对象是不能采用这种形式的,应该改为如下形式: Configuration cfg=new Configuration().configure(); 将该代码改了之后再运行,一切OK。反之,如果你采用properties格式的文件,那么代码就应该不用改动了。建议使用XML文件,比较规范,便于阅读和管理。 |
相关文章推荐
- Hibernate Dialect must be explicitly set 错误信息解决方法
- Hibernate Dialect must be explicitly set 错误信息解决方法
- Hibernate Dialect must be explicitly set解决方法
- Hibernate Dialect must be explicitly set异常解决方法
- Hibernate Dialect must be explicitly set的异常(初学者较容易犯的错误)
- Hibernate Dialect must be explicitly set的异常(初学者较容易犯的错误)
- “org.hibernate.HibernateException: Hibernate Dialect must be explicitly set” 异常解决
- Hibernate Dialect must be explicitly set
- Hibernate Dialect must be explicitly set
- Hibernate Dialect must be explicitly set
- Hibernate Dialect must be explicitly set
- hibernate.dialect' must be set when no Connection available错误
- "Hibernate Dialect must be explicitly set"的解决办法
- "Hibernate Dialect must be explicitly set"的解决办法
- "Hibernate Dialect must be explicitly set"的解决办法
- Service Intent must be explicit的解决方法
- 'hibernate.dialect' must be set when no Connection available
- ImageLoader must be init with configuration before using 错误解决方法
- Java swing使用皮肤后出现Component creation must be done on Event Dispatch Thread错误解决方法
- Android Service Intent must be explicit的解决方法