I am trying to join and retrieve joined result using spring boot and criteria API join. Here I am trying to retrieve role id from second table where a user id match found by joining with first table. When I am running my query I am getting the error like,
Error Update
{
"timestamp": "2018-09-10T10:54:01.163+0000",
"status": 500,
"error": "Internal Server Error",
"message": "com.example.model.Roles cannot be cast to
}
Here I did not used metamodel generated classes. Without using that I implemented. But still getting the same error.
Two things are wrong:
multiselect()
takes a list of selected fields. You must not pass a javax.persistence.criteria.Join
to its parameter.nuserId
can full-filled by Users
table only.If you just want to get both User
and its UserRoleMapping
at the same time, you can try:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Users> cq = cb.createQuery(Users.class);
Root<Users> rootRoles = cq.from(Users.class);
rootRoles.fetch("roleUserRoleMappingMappingJoin", JoinType.LEFT);
cq.select(rootRoles).where(cb.equal(rootRoles.get("nuserId"),nuserID));
List<Users> roleJoinResultObj = em.createQuery(cq).getResultList();