java - 在 Hibernate 中设置参数值时指定字符串类型

标签 java hibernate sql-server-2008

我想知道在 Hibernate 生成的查询中设置参数值时是否可以控制字符串类型(unicode 或 ANSI)。
问题是我的应用程序中的大多数表都有 varchar/char 列,并且这些列经常出现在各种过滤器中。但是,Hibernate 生成的所有查询都将参数类型设置为 nvarchar/nchar,这使得所有建立在 varchar 列上的索引几乎无法使用(索引扫描或全表扫描而不是索引搜索/查找)。

作为解决方法,我将 sendStringParametersAsUnicode ODBC 连接参数设置为 false,这解决了性能问题,但我希望它应该是指定哪个字符串参数必须是 Unicode 的方式,哪个只是简单的 ANSI字符串。

谢谢。

最佳答案

我不会在 Hibernate 或其他地方更改任何问题,因为这不是在当前层中执行此操作的点。这是一个配置问题,因此当您必须配置连接参数 (URL) 时,您可以在不需要任何转换等的情况下使用可采用的配置,因此您只能切换 URL

例如:

jdbc:sqlserver://localhost\MYSERVER;DatabaseName=MyDB;sendStringParametersAsUnicode=false

如果您将数据库切换到服务器 MySQL 或任何其他 SQL Server,那么只需更改配置而不是 Hibernate。我不认为这是正确的地方..

希望对您有所帮助..

我发现这个列表很有帮助:

Vendor              Parameter
-----------------------------------------
JSQLConnect         asciiStringParameters
JTDS                sendStringParametersAsUnicode
DataDirectConnect   sendStringParametersAsUnicode
Microsoft JDBC      sendStringParametersAsUnicode

http://emransharif.blogspot.de/2011/07/performance-issues-with-jdbc-drivers.html

干杯:)

关于java - 在 Hibernate 中设置参数值时指定字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528748/

相关文章:

java - 带有左连接提取的 Jpa namedquery

hibernate - 如何在Grails/GORM/Hibernate中执行特定的SQL

sql-server - 带有嵌套事务的 SQL Try/Catch 逻辑

java - 保存和删除按钮不起作用

java.sql.SQL语法错误异常 : Table 'mydb.alien' doesn't exist

Java 类/继承结构

sql-server - 请解释一下 PIVOT 的组成部分

sql-server-2008 - 连接时 SQL Server 错误 223

java - 该方法每次都给出相同的结果

java - 用于在短语中搜索单词的数据结构