Hibernate应用中遇到的若干问题

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"> </script> <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、付费专栏及课程。

余额充值