您的位置:首页 > 其它

Hibernate应用中遇到的若干问题

2006-11-14 17:23 239 查看
在Hibernate的实际运用中遇到几个小问题。通过查看Hibernate的官方帮助获得了解决。现总结一下。
一、多对多关系的查询问题
用户(TUser)和角色(TRole)存在多对多的关系:一个用户可以拥有多个角色,而一个角色可以有多个用户。显然这个时候会采用多对多的映射,用户(TUser)和角色(TRole)之间通过一个中间表进行关联。这个时候如果要获取特定角色的所有用户,最简单的方式当然是


TRole.getUsers()

这种方式会获取该角色的所有用户,用户很多以至于要分页现实信息,那么这个时候肯定就不行了。这时可以采用下面这种方式:


//其中"Order by this.id"可以用别的过滤条件,this.id对应的是TUser的id


//按TUser的id排序,选取前5个用户


session.createFilter(role.getUsers(),"Order by this.id").setFirstResult(0).
setMaxResults(5).list();

二、集合类的排序问题
集合类排序其实有好几种方法,在官方参考中写得很清楚。我尝试用了其中一种:在Set中增加order-by属性。这里要注意的是对应的Java类必须用LinkedHashSet实例化(对应JDK5.0来说,相信没什么太大的理由是用低版本的jdk吧)。
三、字符串函数substring()
substring()会翻译成相应数据库的substring函数吧,这是我猜的,我只在sqlserver 2000下 做过测试。其用法是substring(expression, start, length):expression对应POJO类的字段, 而start是起始位置(从1开始),length为截取字符串长度。这里start很奇怪,如果不是 从正整数开始(>0)而是从0开始,那么截取字符串的长度则是length-1。这肯定是sql server的问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: