今天用hibernate框架写crm项目时遇到报错: Access to DialectResolutionInfo cannot be null when '' not set
说是hibernate的dialect没有设置,但是在,xml中我已经配置了。主要内容如下:
:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/dtd/hibernate-configuration-3."> <hibernate-configuration> <session-factory> <!-- 必选属性 (5个)--> <!-- 数据库驱动 --> <property name=".driver_class"></property> <!-- 数据库url --> <property name="">jdbc:mysql://localhost:3306/hibernate</property> <!-- 数据库用户名 --> <property name="">root</property> <!-- 数据库密码 --> <property name=""></property> <!-- 数据库方言 : 不同的数据库中,sql语法略有区别 ,指定方言可以让hibernate框架在生成sql语句时,根据 数据库方言生成。 --> <property name=""></property> <!-- 可选属性(3个) --> <!-- 将hibernate生成的sql语句打印到控制台 --> <property name="hibernate.show_sql">true</property> <!-- 将hibernate生成的sql语句格式化 --> <property name="hibernate.format_sql">true</property> <!--## auto schema export 自动导出表,构建表 #hibernate. create(每次框架运行完之后都会创建新表,之前的表会被覆盖。) #hibernate. create-drop (每次框架运行完之后都会将所有表删除) #hibernate. update (如果有表变动,会自动更新有改变的表) #hibernate. validate(校验 )不自动生成表--> <property name="hibernate.">update</property> <!-- 引入orm元数据 --> <mapping resource="com/ysong/domain/"/> </session-factory> </hibernate-configuration>
:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "/dtd/hibernate-mapping-3."> <!-- package:填写一个包名,需要书写完整类名的属性,可以写简答类名 --> <hibernate-mapping package=""> <!-- class元素:配置实体与表的关系 name:完整类名 table:数据库表名 --> <class name="Customer" table="Customer"> <!-- id:配置主键列名映射属性 name:填写主键对应属性名 column:表中的主键列名 (不建议填,让hibernate自动指定类型)type(可选):填写列(属性)的类型。hibernate会自动检测实体的属性类型 每个类型有三种填法:java类型()|hibernate类型(String)|数据库类型(varchar) lenth(可选):配置数据库中列的长度,默认值 :数据库类型的最大长度 not-null(可选):配置该属性(列)是否不能为空,默认值:false --> <id name="cust_id" column="cust_id"> <!-- generator:主键生成策略 --> <generator class="native"></generator> </id> <!-- property:除id之外的列名 name:填写属性名 column:表中的除主键以外的列名 (不建议填,让hibernate自动指定类型)type(可选):填写列(属性)的类型。hibernate会自动检测实体的属性类型 每个类型有三种填法:java类型()|hibernate类型(String)|数据库类型(varchar) lenth(可选):配置数据库中列的长度,默认值 :数据库类型的最大长度 not-null(可选):配置该属性(列)是否不能为空,默认值:false --> <property name="cust_name" column="cust_name"></property> <property name="cust_source" column="cust_source"></property> <property name="cust_level" column="cust_level"></property> <property name="cust_linkman" column="cust_linkman"></property> <property name="cust_phone" column="cust_phone"></property> <property name="cust_mobile" column="cust_mobile"></property> </class> </hibernate-mapping>
HibernateUtils:
package ;
import ;
import ;
import ;
public class HibernateUtils {
private static SessionFactory sessionFactory;
static {
Configuration configuration = new Configuration();
sessionFactory = ();
}
// 获得session=> 获得全新session
public static Session openSession() {
Session session = ();
return session;
}
// 获得session=> 获得与线程绑定的session
public static Session getCurrentSession() {
Session session = ();
return session;
}
}
最后从百度到的一篇文章中找到答案:
原来,这里的new configuration();应该改成new Configuration().configure();
没有configure()就会去classpath找文件,有configure就去找文件。
到此这是今天遇到的问题,记录下来以后不要犯同样的错!