NutzCN Logo
问答 一对多 用多的作为条件查询一 该怎么写
发布于 2723天前 作者 Leewell1989 1802 次浏览 复制 上一个帖子 下一个帖子
标签:

User 包含List
如果以Role作为条件查User
除了硬编码,NutzDao 有没有其他支持?

9 回复

发出去的帖子不能修改和删除?

补充一下:
用户User和角色Role是多对多关系,
User 包含 List
场景是:知道role.id的情况下要查询User,NutzDao支持吗?

先得到Role,然后fetchLinks?

明白你的意思,但是向以下这种情况用这种方法好像就不太好处理

public List<User> searchUser(User user, int currentPage, int pageSize, String orderby) throws YumException {
		Pager pager = dao.createPager(currentPage, pageSize);
		Criteria cri = Cnd.cri();
		if(Strings.isNotNull(user.getLoginName()))
			cri.where().and("login_name", "like", "%" + user.getLoginName() + "%");
		//机构
		if(Strings.isNotNull(user.getOrgCode()))
			cri.where().and("orgCode", "=", user.getOrgCode());
		//角色
		//TODO 先得到Role,然后fetchLinks 
		cri.getOrderBy().asc("login_name");
		List<User> userInfos = new ArrayList<User>();
		try {
			List<User> userList = dao.query(User.class, cri, pager);
			for (User userInfo : userList) {
				userInfos.add(dao.fetchLinks(dao.fetchLinks(userInfo, "roles"), "organization"));
			}
		} catch (Exception e) {
			throw new YumException("分页查询失败", e);
		}
		return userInfos;
	}

只能在条件里拼一个子查询作为条件了。

还有,对于使用一个bean的多个字段作为查询条件的情况,查询方法中除了像我这样一个字段一个字段的判断,有什么好的解决办法吗?

List<User> userInfos = dao.fetchLinks(dao.query(User.class, cnd), "role|organization"));

Cnd有andEX和orEX方法自动判断空值

-_-!!

回到上边的问题,好像不行吧?
fetchLinks() 是把 user下边的集合List,List查出来吧?我是想 Role和organ作为条件来查User

额,根据role和organ查条件?? 那得配 Role/Organization --> User的@ManyMany了, 要不就Cnd写个条件也行

类似这样?? Cnd各种组合一下

dao.query(User.class, Cnd.wrap("id in (select user_id from t_user_role where role_id=" + role_id+")")));

前半句说的,就是配了以后也没什么好的写法。所以一直是按照后边这种硬编码写的。

添加回复
请先登陆
回到顶部