关于Hibernate连接SQLServer2005的诸多问题及解决方案

 

首先,正确的配置如下:

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了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值