【发布时间】:2010-12-17 00:45:36
【问题描述】:
如何在 Netbeans 6.7.1 中使用 Hibernate 连接到 Sql Server 数据库?请指教。
我的方言被禁用了。
【问题讨论】:
标签: java sql-server hibernate orm
如何在 Netbeans 6.7.1 中使用 Hibernate 连接到 Sql Server 数据库?请指教。
我的方言被禁用了。
【问题讨论】:
标签: java sql-server hibernate orm
对于 SQL Server 2000 和 2005,您应该使用 SQLServerDialect(应该优先于 SybaseDialect,即 deprecated)。
我无法验证 NetBeans Hibernate 向导在 SQL Server 中的行为,但根据this tutorial:
当您使用向导创建 Hibernate 配置文件时,您可以通过从 IDE 注册的数据库连接列表中进行选择来指定数据库连接。生成配置文件时,IDE 会根据所选的数据库连接自动添加连接详细信息和方言信息。
所以,我的问题是:您是否为您的 SQL Server 数据库注册了数据库连接?如果没有,请转到 Services,为您的 SQL Server JDBC 驱动程序添加一个 New Driver(右键单击 Drivers 节点)并添加一个 New Connection(右键单击 Databases 节点)为您的数据库提供正确的 URL。
【讨论】:
对于使用 Hibernate 和 SQL Server 的任何人 - 我们的自定义方言可能会有所帮助:http://www.componentix.com/blog/5/improved-hibernate-dialect-for-microsoft-sql-server
public class SQLServerDialect extends org.hibernate.dialect.SQLServerDialect {
/**
* Initializes a new instance of the {@link SQLServerDialect} class.
*/
public SQLServerDialect() {
registerColumnType(Types.BIGINT, "bigint");
registerColumnType(Types.BIT, "bit");
registerColumnType(Types.CHAR, "nchar(1)");
registerColumnType(Types.VARCHAR, 4000, "nvarchar($l)");
registerColumnType(Types.VARCHAR, "nvarchar(max)");
registerColumnType(Types.VARBINARY, 4000, "varbinary($1)");
registerColumnType(Types.VARBINARY, "varbinary(max)");
registerColumnType(Types.BLOB, "varbinary(max)");
registerColumnType(Types.CLOB, "nvarchar(max)");
}
}
【讨论】: