• 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条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部