问题概述:新接手的项目首次接触非关系型数据库mongodb,找不到地方直接写SQL,只能通过Criteria查询数据库。只好查资料用hibernate的Criteria多表查询方法,总是和网上的情况不一样,原来mongodb的Criteria不一样。
问题详情:有三张表,用户表,角色表,权限表。用户角色多对一,角色权限多对多。通过权限id查询拥有该权限的角色
解决办法:
@RequestMapping("/findUserByResource")
@ResponseBody
public List<User> findUserByResource(String reid){
//
Resource resource = resourceService.findOne(reid,"basic_resource");
List<Criteria> criterias = new ArrayList<>();
criterias.add(Criteria.where("resources").in(resource));
List<Role> roleList = roleService.findAll("basic_role",criterias,"ASC","_id");
List<Criteria> criterias2 = new ArrayList<>();
criterias2.add(Criteria.where("roles").in(roleList));
List<User> userList = userService.findAll(collectionId,criterias2,"ASC","_id");
return userList;
}
无法用一句SQL解决,那就只好这样分步执行了,有更好的办法吗