无法转换模型 - spring 引导和条件 API 加入中的内部错误

Model cannot be cast - internal error in spring boot and Criteria API Join

我正在尝试使用 spring 引导和标准 API 加入来加入并检索加入结果。在这里,我试图从第二个 table 中检索角色 ID,其中通过加入第一个 table 找到了匹配的用户 ID。当我 运行 我的查询时,我收到类似

的错误

错误更新

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

}

这里我没有使用元模型生成类。没有使用我实现的。但仍然出现相同的错误。

有两处错误:

  1. multiselect() 获取选定字段的列表。您不能将 javax.persistence.criteria.Join 传递给它的参数。
  2. 您的查询条件与联接完全无关,因为字段 nuserId 的条件只能由 Users table 完全填充。

如果你只是想同时获得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();