データベースに2つの列がある場合、ハイバネートでのvarcharおよびnvarcharへのマッピング
code varchar(3)
name nvarchar(50)
コードで検索するためにvarcharを渡すようにhibernateに指示するにはどうすればよいですか? Hibernateのマッピング文字列で
がnvarchar型にマップされ、それはのようなクエリを生成している:
Select code, name From table where code=N'AAA' (instead of code='AAA')
を、それがインデックスがシーク動作をインデックスするのではなく、スキャンを原因として、これは非常に悪いです(すべてのインデックス・ノードをスキャンする代わりに、直接に行きます
コードがvarcharからnvarcharに変更されると、パフォーマンスが低下します(nvarcharがvarcharより2倍多くの領域を使用するため、IO操作が増えます)。
Java型ではなく、データベース型に従ってマッピングするようにhibernateに指示する方法はありますか?
おかげ
http://groups.google.com/group/nhusers –
でこの質問をすると、hiberntaeはnvarchar型でデータベースにフィールドを作成しますか?または、他の何か? – Am1rr3zA
私はhibernateがvarchar型にvarchar型を渡し、nvarchar型にnvarchar型を渡します。例えば、 。テーブルに挿入する(varcharCol、nvarcharCol)値( 'aaa'、N'aaa ') – Niikola