admin

在休眠状态下映射到varchar和nvarchar

sql

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

code varchar(3)
name nvarchar(50)

如何告诉Hibernate通过varchar进行代码搜索?

在休眠映射字符串中,字符串被映射到nvarchar,并产生如下查询:

Select code, name From table where code=N'AAA'  (instead of code='AAA')

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

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

有什么方法可以告诉Hibernate根据数据库类型而不是Java类型进行映射?

谢谢


阅读 173

收藏
2021-05-10

共1个答案

admin



将以上代码添加到hibernate的reveng文件中。

2021-05-10