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都支持这个,但是规范里不支持。不明白为什么不支持。

你可能感兴趣的:(ejb)