1、设置父模块
java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider
原因: 使用的hibernate-validator-6.3.1-Final版本, 使用的是JSR303。
解决方案:
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、一个加载发送三天语句,由于延时加载。