我想知道在 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/