Ste*_*hen 6 sql hibernate criteria
我有一个可能有一些不良数据的列,我无法清理它,所以我需要检查null或空字符串.我正在做一个Hibernate Criteria查询,所以我现在得到以下错误返回:
Session session = getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Criteria myCriteria = session.createCriteria(Object);
...
myCriteria.add(Restrictions.or(Restrictions.isNull("stringColumn"),
Restrictions.eq("stringColumn", "")));
List<Objects> list = myCriteria.list();
Run Code Online (Sandbox Code Playgroud)
我不能让它正确地返回我期望的结果.因此,作为一项实验,我将第二个限制改为:
Restrictions.eq("stringColumn", "''")
Run Code Online (Sandbox Code Playgroud)
它开始返回预期的结果,所以hibernate错误地将我的空字符串(例如"")转换为SQL空字符串(例如''),或者我只是做错了吗?
使用 HSQL(和 Derby)和以下值:
插入 FOO 值 (1, 'foo'); 插入 FOO 值 (2, 'bar'); 插入 FOO 值 (3, NULL); 插入 FOO 值 (4, '');
您条件查询
Criteria crit = session.createCriteria(Foo.class);
crit.add(Restrictions.or(Restrictions.isNull("name"),
Restrictions.eq("name", "")));
crit.list();
Run Code Online (Sandbox Code Playgroud)
返回:
Foo [id=3, name=null]
Foo [id=4, name=]
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。
你使用什么数据库?会是甲骨文吗?