小编Nii*_*ola的帖子

在hibernate中映射到varchar和nvarchar

如果数据库中有2列,例如.

code varchar(3)
name nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

如何通过代码告诉hibernate传递varchar?

在hibernate映射中,字符串映射到nvarchar,它产生如下查询:

Select code, name From table where code=N'AAA'  (instead of code='AAA')
Run Code Online (Sandbox Code Playgroud)

这是非常糟糕的,因为它导致索引扫描而不是索引搜索操作(扫描所有索引节点而不是直接转到请求的节点)

由于代码在数百万行以及多个索引和外键中使用,因此将其从varchar更改为nvarchar将导致性能下降(更多IO操作,因为nvarchar使用的空间比varchar多两倍).

有没有办法告诉hibernate根据数据库类型进行映射,而不是Java类型?

谢谢

sql varchar hibernate nvarchar

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

hibernate ×1

nvarchar ×1

sql ×1

varchar ×1