按位与运算(&)在许多数据库中都是支持的,遗憾的是,Hibernate 3在HQL中不支持&运算,如果你写了如下的HQL:
则Hibernate报错:exception: unexpected char: '&'.
如何解决此问题?方法是利用Hibernate支持的自定义SQLFunction,定义一个bitand(a,b)的SQLFunction,然后,自己写一个解释器,生成a & b的SQL语句。
要实现一个自定义的SQLFunction,必须实现SQLFunction接口:
复制内容到剪贴板 程序代码
where a.id & :mask = :target
则Hibernate报错:exception: unexpected char: '&'.
如何解决此问题?方法是利用Hibernate支持的自定义SQLFunction,定义一个bitand(a,b)的SQLFunction,然后,自己写一个解释器,生成a & b的SQL语句。
要实现一个自定义的SQLFunction,必须实现SQLFunction接口:
Tags: 运算 hibernate3 SQL
复制内容到剪贴板 程序代码
ResultSet can not re-read row data for column XX
又要骂MS了.那该死的微软,它提供的官方驱动有问题,他不完全支持JDBC规范.
朋友们请记住啊,用sqlserver时,别用MS的驱动,用jtds.
现在最新的版本是1.1, June 16, 2005 http://sourceforge.net/projects/jtds/
jtds非常好用!!!!
注意:
由于微软的SQL Server2000的JDBC驱动不支持“反复查询”,所以,可能会出现ResultSet can not re-read row data for column x的错误。
如果使用sourceforge的jTDS驱动,就不会有上述问题了。