您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

cms05---cms-core搭建与是实现01

宝哥大数据 发布时间:2017-11-03 16:46:27 ,浏览量:1

1、设置父模块

这里写图片描述

2、引入其他子模块, 注意该模块一定要父模块中定义

这里写图片描述

问题1、java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider 原因: 使用的hibernate-validator-6.3.1-Final版本, 使用的是JSR303。 解决方案:

这里写图片描述

3、User, Role,Group的关联关系, 都是多对多的关系

这里写图片描述

3.1、为了简化关系, 将User-Role 拆分成两个多对一的关系(User-UserRole-Role)。U’ser-Group同理

这里写图片描述

3.1.1、UserGroup

这里写图片描述

问题2:
 t_role.NAME -  (Non-uppercase input column: name) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
原因: dbunit使用IDataSet插入数据, 实体类的属性名和测试文件的名称不一致。 问题3:
Unable to typecast value  of type  to INTEGER
原因: Role的roletype 应该设置成String类型。
    @Enumerated(EnumType.STRING)//设置泛型在数据库的存储的类型, ORDINAL: 数字0,1,2; STRING:按照泛型的字符串
    @Column(name="role_type")
    public RoleType getRoleType() {
        return roleType;
    }
3.2、测试 3.2.1、测试listUsersByRoleType, RoleType为泛型,查询一直不成功。
    @Test
    public void testListRoleUsers() {
        List us = userDao.listUsersByRoleType(RoleType.ROLE_AUDIT);
        for (User user : us) {
            System.out.println(user);
        }
    }

    @Override
    public List listUsersByRoleType(RoleType roleType) {
        String hql = "select ur.user from UserRole ur where ur.role.role_type=?";
        return this.list(hql, roleType);
    }
错误:
could not resolve property: role_type of: 
com.chb.cms.model.Role [select ur.user from com.chb.cms.model.UserRole ur where ur.role.role_type=?]
未解决 3.3测试loadUserGroup
    @Test
    public void testLoadUserGroup() {
        int uid = 2, gid = 1;
        UserGroup ug = userDao.loadUserGroup(uid, gid);
        System.out.println(ug);
        System.out.println(ug.getUser());
        System.out.println(ug.getGroup());
    }
3.3.1、loadUserGroup()实现

    @Override
    public UserGroup loadUserGroup(int userId, int groupId) {
        String hql = "select ug from UserGroup ug where ug.user.id = ? and ug.group.id = ?";
        return (UserGroup) this.getSession().createQuery(hql).setParameter(0, userId)
                .setParameter(1, groupId).uniqueResult();
    }
3.3.2、一个加载发送三天语句,由于延时加载。

这里写图片描述

3.3.3、解决延时加载,使用left join fetch

这里写图片描述

3.3.4、解决只需要一条语句

这里写图片描述

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0399s