-
hibernate一对多多对多排序问题
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
问题提出
权限管理模块中用户-角色-资源存在一对多关系,如一个用户对应多个角色,一个角色对应多个资源(权限),客户端用户角色对应的权限显示相关资源菜单。一对多关系用程序描述如下:
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST,
CascadeType.MERGE }, mappedBy = "menus")
private Set<RoleEntity> roles;
然而set默认为不排序的类型,如此会导致在客户端呈现的用户菜单刷新一次就改变一下,即菜单显示不稳定。
-
问题解决过程
1.一开始想到用treeset代替hashset,程序运行出错
2.将set强制转成arraylist,并重新排序,程序运行仍出错
3.将在service层程序写过获得实体的排序算法,问题解决,但不够简洁
4.最后想到用注解在获得对象时就进行排序,程序如下:
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST,
CascadeType.MERGE }, mappedBy = "menus")
@OrderBy(value = "id ASC")
private Set<RoleEntity> roles;
最后显示效果如下:
-
-
- 标签:
- 排序
- 用户
- 角色
- set
- 过程
- 出错
- 问题
- 菜单
- 程序
- hibernate一对多多对多排序问题
- 问题解决
-
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~