ejb2.1中ejbQL的缺点,权且作为笔记
1. Object()操作符
感觉就是Sun公司创造出来的幌子,什么意义也没有。只是给ejb的实现方确定什么时候那个abstract schema类型成为返回值。对于QL查询本身而言,确实没有什么意义。Sun公司的解释好像是下一代SQL规范里可能包含这个操作符。呵呵。鬼知道SQL2003或者更新版本里是否有这个操作符,反正我是没有看到。
2. 缺乏对Date类型的操作
缺省对java.util.Date原生类型的支持。
3. 支持的SQL函数太少了
连CAST(), DOW(), MONTH(), UPPER(), LOWER()这些简单的函数都没有。 看看它支持的有限几个聚集函数吧:
count, sum, avg, max, min
4. 选择多个列也不行
SELECT addr.city, addr.state FROM Address AS addr这种语句肯定无效,一次只能选择一列
5. group by 和having
支持吗?好像支持
6. Subqueries
支持吗?似乎也支持。
SELECT OBJECT(res)
FROM Reservations AS res
WHERE res.amountPaid >=
( SELECT AVG(r.amountPaid) FROM Cruise AS c, IN( c.reservations ) AS r
WHERE c = ?1 )
7. 动态查询
大多数vendor都支持这个,但是规范里不支持。不明白为什么不支持。