Hibernate应用中遇到的若干问题

本文解决Hibernate中多对多关系查询及分页显示问题,并介绍集合类排序及字符串函数substring()的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的问题了。

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值