“org.hibernate.HibernateException: Hibernate Dialect must be explicitly set” 异常解决

异常信息:

Exception in thread "main" 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:409)
 at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:119)
 at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
 at com.red.test.TestStudent.main(TestStudent.java:28)

 

功能代码:

 1java代码

  Student st = new Student();
  
  st.setGid(new Integer(4));
  st.setName("likeqiang");
  st.setSex("1");
  st.setBirth(new Date());
  Configuration cfg = new Configuration();
  SessionFactory sf = cfg.buildSessionFactory();
  Session session = sf.openSession();
  
  session.beginTransaction();
  session.save(st);
  session.getTransaction().commit();
  session.close();
  sf.close();


 

  2hibernate.cfg.xml配置文件

      ...
      <!--配置SQLServer连接属性-->
      <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
      <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
      <property name="connection.url">jdbc:sqlserver://localhost:51472;databaseName=red</property>
      <property name="connection.username">sa</property>
      <property name="connection.password">123456</property>
     ...

 

问题分析:

        hibernate.cfg.xml文件中时配置了dialect的(见“hibernate.cfg.xml配置文件红色部分代码),为什么还是报没有指定dialect的异常呢?

   经过分析发现原来是在使用hibernate的时候,没有调用配置文件,导致系统不能读取dialect信息。

 

解决办法:

     修改上面java代码,将

            SessionFactory sf = cfg.buildSessionFactory();
     改成

            SessionFactory sf = cfg.configure().buildSessionFactory();

 

问题结论:

 configure()方法默认会在classpath下寻找hibernate.cfg.xml文件,如果没有找到该文件,系统会报HibernateException,实际上我们还可以通过configure(Stringresource)来指定配置文件,通常我们都是采用的默认设置,所以直接使用configure()。

  其实如果不适用configure()方法,这时hibernate会在classpath下寻找hibernate.properties文件,如果没有找到,系统将报HibernateException.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值