如何配置NHibernate连接SQL Server?配置文件报错求助
解决NHibernate连接SQL Server的配置错误
错误原因分析
你遇到的connection.url无效问题,核心原因是NHibernate不支持connection.url这个配置键——这是原生Hibernate的配置项,NHibernate对应的正确配置是connection.connection_string。此外你的配置还有两处冲突/错误:
- 重复定义了数据库驱动类,同时指定jTDS驱动和SqlClientDriver,二者冲突
- 使用了原生Hibernate的方言类,而非NHibernate适配的SQL Server方言
修正后的配置文件
替换你的hibernate.xml.cfg为以下内容:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration> <session-factory xmlns="urn:nhibernate-configuration-2.2"> <!-- 使用NHibernate的SQL Server驱动 --> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <!-- 对应SQL Server版本的方言,这里以SQL Server 2008+为例 --> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <!-- NHibernate的连接字符串配置项 --> <property name="connection.connection_string">Server=OUSSEMA;Database=DB_GestionCompte;User ID=sa;Password=123;</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration>
关键修改说明
- 移除重复的
hibernate.connection.driver_class配置,保留NHibernate.Driver.SqlClientDriver;如果想使用jTDS驱动,只需将该值改为NHibernate.Driver.JtdsDriver,同时确保项目引用了jTDS程序集 - 将
org.hibernate.dialect.SQLServerDialect替换为NHibernate专属方言,比如MsSql2008Dialect,可根据你的SQL Server版本选择对应方言(如MsSql2012Dialect、MsSql2017Dialect等) - 将
connection.url替换为connection.connection_string,使用标准SQL Server连接字符串格式
验证要点
- 确保项目已正确引用NHibernate核心程序集
- 确认SQL Server允许SQL认证登录,且
sa账号密码、数据库名称、服务器名称均正确
内容的提问来源于stack exchange,提问作者Oussema
相关产品推荐
相关产品推荐

