Obtention d'Hibernate et de SQL Server pour jouer gentil avec VARCHAR et NVARCHAR


Je suis actuellement dans le processus de l'activation de caractères UTF-8 dans certaines tables de la base de données est grande. Ces tables sont déjà de MS-SQL de type NVARCHAR. En outre, j'ai plusieurs champs de type VARCHAR ainsi.

Il y a un problème connu avec Hibernate interactions avec le pilote JDBC (voir, par exemple, La cartographie de type varchar et nvarchar en veille prolongée) . En bref, Hibernate/JDBC génère le SQL qui passe toutes les chaînes de caractères au format Unicode, quel que soit le sous-jacent de type SQL. En cas de non-unicode (varchar) champ dans la base de données est comparée à une saisie Unicode string, le indicies pour cette colonne ne correspondent pas à l'encodage donc un full table scan est effectué. Dans le pilote JDBC (les deux JTDS et MS versions) il y a un paramètre à passer les chaînes Unicode en ASCII, mais c'est un tout ou rien, proposition qui n'autorise pas les caractères internationaux d'être entrée dans la base de données.

La plupart des postes que j'ai vu sur cette question en suis venu avec l'une des deux solutions 1) tout changer dans la base de données NVARCHAR ou 2) définir la sendStringParametersAsUnicode=false,
Ma question est-ce - est-il une solution connue pour avoir VARCHAR et NVARCHAR jouent bien ensemble? C'est un énorme problème de mon environnement de tout changer le type de données NVARCHAR en raison de l'aval de dépendances et d'autres questions externes.

InformationsquelleAutor dfb | 2011-03-08