200分问一个简单hibernate的isnull问题
我用的sql server 2000,这样的HSQL为什么hibernate总是报错?
String HSQL="select isnull(count(a),0) from CustomerUnitInfo a where a.unitId="+UnitId;
result=((Integer)DbSession.iterate(HSQL).next()).intValue();
抱错如下:
net.sf.hibernate.QueryException: undefined alias: isnull [select isnull(count(a),0) from com.bkgd.water.dao.tables.CustomerUnitInfo a where a.unitId=5]
at net.sf.hibernate.hql.PathExpressionParser.token(PathExpressionParser.java:103)
at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:29)
at net.sf.hibernate.hql.SelectParser.token(SelectParser.java:170)
at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87)
at net.sf.hibernate.hql.ClauseParser.end(ClauseParser.java:114)
at net.sf.hibernate.hql.PreprocessingParser.end(PreprocessingParser.java:143)
at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:30)
at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149)
at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138)
at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:295)
at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1572)
at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1602)
at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1592)
at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1584)
看错误提示大概是hibernate认为isnull是一个别名,可这个是sql server的关键字啊?
hibernate的配置文件中我已经设置为:
<property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
我用的jtds的sql server jdbc 驱动,用ms的那三个文件的jdbc驱动也是一样报错,hibernate版本2.1.8。