Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate中设置参数值时指定字符串类型_Java_Hibernate_Sql Server 2008 - Fatal编程技术网

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

Java 在Hibernate中设置参数值时指定字符串类型,java,hibernate,sql-server-2008,Java,Hibernate,Sql Server 2008,我想知道在Hibernate生成的查询中设置参数值时是否可以控制字符串的类型(unicode或ANSI)。 问题是,我的应用程序中的大多数表都有varchar/char列,这些列通常出现在各种过滤器中。但是,Hibernate生成的所有查询都将参数type设置为nvarchar/nchar,使得构建在varchar列上的所有索引几乎不可用(索引扫描或全表扫描,而不是索引查找/查找) 作为一种解决方法,我将sendStringParametersAsUnicodeODBC连接参数设置为false,

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

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


多谢各位

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

e、 g:

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

希望对你有帮助

我发现这个列表很有用:

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


干杯:)

这就是我现在要做的。我不喜欢这种方法的地方是我不能正确设置nvarchar值。。。在某些情况下,我需要
varchar
列,在其他情况下,我需要
nvarhar
。我确信列类型应该根据域需求来决定,而不是因为ORM的首选项……你在这里看到过这个吗?是的,我看到了;这似乎是另一种需要添加用户定义类型以模拟
PreparedStatement.setString/setNString
功能的黑客行为。您是否找到了这个问题的满意答案?@daiscog:no,我最终得到了
sendStringParametersAsUnicode
Vendor              Parameter
-----------------------------------------
JSQLConnect         asciiStringParameters
JTDS                sendStringParametersAsUnicode
DataDirectConnect   sendStringParametersAsUnicode
Microsoft JDBC      sendStringParametersAsUnicode