Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法强制转换模型-spring引导和标准API联接中存在内部错误_Spring_Inner Join_Criteria Api - Fatal编程技术网

无法强制转换模型-spring引导和标准API联接中存在内部错误

无法强制转换模型-spring引导和标准API联接中存在内部错误,spring,inner-join,criteria-api,Spring,Inner Join,Criteria Api,我正在尝试使用spring引导和标准API连接来连接和检索连接结果。在这里,我试图从第二个表中检索角色id,在第二个表中,通过连接第一个表找到了用户id匹配项。当我运行查询时,我得到的错误如下: 错误更新 { "timestamp": "2018-09-10T10:54:01.163+0000", "status": 500, "error": "Internal Server Error", "message": "com.example.model.Roles cannot be cast

我正在尝试使用spring引导和标准API连接来连接和检索连接结果。在这里,我试图从第二个表中检索角色id,在第二个表中,通过连接第一个表找到了用户id匹配项。当我运行查询时,我得到的错误如下:

错误更新

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

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

有两件事是错误的:

  • multiselect()
    获取选定字段的列表。不能向其参数传递
    javax.persistence.criteria.Join
  • 您的查询条件与join完全不相关,因为字段
    nuserId
    上的条件只能由
    用户填写
  • 如果您只想同时获取
    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();
    
    CriteriaBuilder cb=em.getCriteriaBuilder();
    CriteriaQuery cq=cb.createQuery(Users.class);
    Root rootRoles=cq.from(Users.class);
    获取(“roleUserRoleMappingMappingJoin”,JoinType.LEFT);
    cq.select(rootRoles).where(cb.equal(rootRoles.get(“nuserId”),nuserId));
    List roleJoinResultObj=em.createQuery(cq.getResultList();
    
    是。我了解执行的方式。谢谢你的回复。