【发布时间】:2014-08-19 21:50:21
【问题描述】:
我正在尝试为我的应用程序设置一个查询,以仅从具有特定列集的表中提取值。大多数情况下,此列将为空,但如果您在应用程序端编辑并保存项目而不在此字段中放置任何内容,则它将一个空白字符串保存到该数据库字段。
我已经尝试过 TSQL 查询:
SELECT * from TABLE where COLUMN is not NULL AND COLUMN != ''
此查询返回我需要的结果,但是当我在 HQL 中运行相同的查询时:
SELECT OBJECT from TABLE where COLUMN is not NULL and COLUMN <> ''
然后它仍然包含该列中具有空白字符串的值。我已经尝试使用带有运算符 和 != 的 HQL,并且还尝试使用 Restrictions.ne("column","") 将其转换为标准对象,但似乎没有提供我需要的结果。
我在 cmets 中尝试了 Length,但没有运气。使用查询中的长度,休眠会生成完整的查询。 time_clock_id 列是我遇到的问题。 Hibernate 设置为 SQLServerDialect
select timezone0_.time_zone_id as time1_368_, timezone0_.version as version368_, timezone0_.modification_timestamp as modifica3_368_, timezone0_.time_offset as time4_368_, timezone0_.modification_user as modifica5_368_, timezone0_.name as name368_, timezone0_.description as descript7_368_, timezone0_.active as active368_, timezone0_.time_clock_id as time9_368_ from time_zone timezone0_ where timezone0_.active=1 and (timezone0_.time_clock_id is not null) and len(timezone0_.time_clock_id)>0
【问题讨论】:
-
尝试使用
LENGTH(COLUMN) > 0。 -
什么是休眠生成?您是否为您的数据库设置了方言?
-
刚刚尝试了 Length 并没有任何运气。 hibernate中设置的方言是SQLServerDialect
-
我更新了描述以打印出 Hibernate 生成的完整查询。我尝试在 MSSQL 中运行此查询,它确实产生了我正在寻找的结果,但应用程序中的结果仍然不同。