首先,正确的配置如下:
Hibernate.cfg.xml配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<!-- local connection properties -->
<property name="hibernate.connection.url">
jdbc:sqlserver://127.0.0.1:1433;databaseName=你自己的数据库名称
</property>
<property name="hibernate.connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="entity/Master.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
实体关系映射文件配置如下:
XXX.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entity.Master" table="usertable" >
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="username" column="name" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
</class>
</hibernate-mapping>
其中要注意 <generator class="native"/> 的配置,class不能写作sequence ,否则会报主键生成错误,可以使用native或者assigned或者其他生成策略,因为sql2005不支持sequence策略。
然后就是hibernate使用的驱动名称为:sqljdbc4.jar.
最后如果一切按照如上配置完成,如果Hibernate还是报错,错误为主键生成错误引起原因为数据库方言或者配置问题,那很可能的一点就是你使用的hibernate.cfg.xml文件是拷贝的别人的其中带有许多实体关系映射文件,例如:
而其中的有些映射文件你并没有在程序中编写POJO类,所以当你加载hibernate.cfg.xml文件时,Hibernate会因为找不到实体类而报错,只要将多余的XXX.hbm.xml文件去掉再试试就OK了。