I am getting exception as
java.lang.ClassCastException: com.chat.dao.model.PGUserRoles cannot be cast to com.querydsl.core.Tuple
My code seems to be correct.
JPAQuery<Tuple> query = new JPAQuery<Tuple>(entityManager);
QPGUserRoles pgUserRoles = QPGUserRoles.pGUserRoles;
List<Tuple> dataList = query
.from(pgUserRoles)
.where(isRoleName(userRolesDTO.getRoleName()),
isRoleType(userRolesDTO.getRoleType()),
isStatus(userRolesDTO.getStatus()),
isStatusNotEq()
)
.offset(offset)
.limit(limit)
.orderBy(orderByRoleIdDesc())
.fetch();
UserRolesDTO userData = null;
for (Tuple tuple : dataList) {
userData = new UserRolesDTO();
userData.setRoleId(tuple.get(pgUserRoles.roleId));
userData.setRoleName(tuple.get(pgUserRoles.roleName));
userData.setRoleType(tuple.get(pgUserRoles.roleType));
userData.setStatus(tuple.get(pgUserRoles.status));
userRoleList.add(userData);
}
Exception is thrown at line with for
I don't understand why exception is been throw. Tuple is generic query result projection. And the example in there doc is similar to mine. I'm using querydsl 4.2.1 version.
Ok so after modifying my code a little bit wrt v4. Its working now. Thank you all for your support.
JPAQuery<Tuple> query = new JPAQuery<Tuple>(entityManager);
QPGUserRoles pgUserRoles = QPGUserRoles.pGUserRoles;
List<Tuple> dataList = query
.from(pgUserRoles)
.select(pgUserRoles.roleId,
pgUserRoles.roleName,
pgUserRoles.roleType,
pgUserRoles.status)
.where(isRoleName(userRolesDTO.getRoleName()),
isRoleType(userRolesDTO.getRoleType()),
isStatus(userRolesDTO.getStatus()),
isStatusNotEq()
)
.offset(offset)
.limit(limit)
.orderBy(orderByRoleIdDesc())
.fetch();