Tag: 运算预览模式: 普通 | 列表
10-03
08

解决Hibernate 3不支持 "&" 运算的SQL语句

按位与运算(&)在许多数据库中都是支持的,遗憾的是,Hibernate 3在HQL中不支持&运算,如果你写了如下的HQL:

where a.id & :mask = :target


则Hibernate报错:exception: unexpected char: '&'.

如何解决此问题?方法是利用Hibernate支持的自定义SQLFunction,定义一个bitand(a,b)的SQLFunction,然后,自己写一个解释器,生成a & b的SQL语句。

要实现一个自定义的SQLFunction,必须实现SQLFunction接口:

查看更多...

Tags: 运算 hibernate3 SQL

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 508
09-06
18

Java的三元if-else运算符

这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。这与本章后一节要讲述的普通if-else语句是不同的。表达式采取下述形式:
  布尔表达式 ? 值0:值1
  若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔表达式”的结果为false,计算的就是“值1”,而且它的结果成为最终由运算符产生的值。
  当然,也可以换用普通的if-else语句(在后面介绍),但三元运算符更加简洁。尽管C引以为傲的就是它是一种简练的语言,而且三元运算符的引入多半就是为了体现这种高效率的编程,但假若您打算频繁用它,还是要先多作一些思量——它很容易就会产生可读性极差的代码。
  可将条件运算符用于自己的“副作用”,或用于它生成的值。但通常都应将其用于值,因为那样做可将运算符与if-else明确区别开。下面便是一个例子:

  static int ternary(int i) {
  return i < 10 ? i * 100 : i * 10;
  }

查看更多...

Tags: 三元 选择 运算

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 626