Archive for the ‘Database’ Category

No LIMIT clause in HQL (Hibernate 3)
Friday, July 4th, 2008

在Hibernate 2中习惯了将limit ?, ?语句写在HQL中,使用Hibernate 3时突然发现limit语句不起作用了,hibernate生成的SQL中完全不见limit的踪影,它被忽略了!

limit在分页中可是至关重要的工具。当然某些牛人把整个表都取出来在内存中作分页,我却没有这种魄力。

HQL的文档中也没有提到LIMIT,可能真的是不支持了。不过我们可以用Criteria这个接口的setFirstResultsetMaxResults来实现limit。Query接口也有类似的方法。

如果用的是Spring的HibernateTemplate,则可以调用其findByCriteria方法来实现相同的功能。

数据库计算一条记录的名次
Thursday, June 26th, 2008

有些东西很简单,自己却想不出来。

平时的工作中习惯了把记录排序然后把结果列表排序输出。但是闲的时候我就想,怎么知道某条记录在某种排序方式下面的排位(名次)呢?

在国外一个blog里看到办法的时候,感觉自己真是愚蠢。而在该blogger提出这个问题让大家留言回答的时候,许多人都想的是非常复杂的办法,包括存储过程、临时表。

国内无法正常访问该blog,实际上思想很简单,该条记录的位置就是它前面的记录数加一。其实这不正是名次的定义吗?真是羞愧……这个问题我想了很久,想不到一个合理的办法……