Модель не может быть приведена - внутренняя ошибка при весенней загрузке и Criteria API Join - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь присоединиться и получить объединенный результат с использованием весенней загрузки и критериев API соединения.Здесь я пытаюсь получить идентификатор роли из второй таблицы, в которой найдено совпадение идентификатора пользователя путем соединения с первой таблицей.Когда я выполняю свой запрос, я получаю сообщение об ошибке:

Ошибка обновления

{
"timestamp": "2018-09-10T10:54:01.163+0000",
"status": 500,
"error": "Internal Server Error",
"message": "com.example.model.Roles cannot be cast to 

}

Здесь я не использовал сгенерированную метамодельклассы.Не используя это я реализовал.Но все равно получаю ту же ошибку.

1 Ответ

0 голосов
/ 10 сентября 2018

Две вещи не так:

  1. multiselect() принимает список выбранных полей. Вы не должны передавать javax.persistence.criteria.Join его параметру.
  2. Ваше условие запроса вообще не связано с присоединением, поскольку условие в поле nuserId может быть заполнено только таблицей Users.

Если вы просто хотите одновременно получить User и UserRoleMapping, вы можете попробовать:

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();
...