hibernate中条件查询其实是一件非常有意思的事情。能够熟练使用它的人来说,配置、使用hibernate可谓是手到擒来,但是对于我们这些菜鸟们来说,使用hibernate不熟悉,就会导致各种各样的问题,今天我就遇到了低级的问题,“白白浪费”了我4个多小时的时间。
我使用hibernate的criteria进行条件查询,当我输入的条件的是数字或者无条件输入的时候,能够查询出来数据,但当我输入汉字查询的时候,虽然形成的sql语句中添加了查询条件,但就是查询不出来数据,这是为什么呢?(如下所示的代码)
<property name="connection.url">jdbc:mysql://localhost:3306/meikuang?useUnicode=true&characterEncoding=utf-8</property>
因为我的数据表是导入的excel,所以我怀疑是导入的数据表有问题,但是在我采用hibernate的create方法自动生成表之后,再导入表,查询还是没有数据。因此不是表的问题。
我将以上的sql语句放在mysql上运行,明明可以查询到数据,因此,我的直觉告诉我应该是hibernate查询的时候,输入的汉字条件有问题,一提汉字,想必我们程序猿都明白------编码问题,是编程开发中非常头疼的问题。如果确认是编码问题,很好解决,但是找不到的确非常的蛋疼。
我检查了数据库和程序的编码都是一致的(UTF-8),但hibernate的编码格式没有设置编码格式,导致乱码无法查询。
<property name="connection.url">jdbc:mysql://localhost:3306/meikuang?useUnicode=true&characterEncoding=utf-8</property>
所以在hibernate配置时一定要配置hibernate数据库连接的编码格式,否则就会出现很多问题。