有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

作为一种解决方法,我将sendStringParametersAsUnicodeODBC connection参数设置为false,这解决了性能问题,但我希望这应该是指定哪个字符串参数必须是Unicode,哪个只是简单的ANSI字符串的方法

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    我不会在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

    干杯:)