现在的位置: 首页 > 综合 > 正文

Hibernat 使用Criteria查询多对多关系(SET集合)条件

2017年10月11日 ⁄ 综合 ⁄ 共 3183字 ⁄ 字号 评论关闭

1.版块 module{

  private Set<Moderator> moderators=new HashSet<Moderator>();

}

版主 moderator{

private Set<module> modules=new HashSet<Module>();

}

module.hbm.xml

<set name="moderators" table="t_module_moderator">
           <key column="module_id"/>
           <many-to-many class="com.bbkmobile.iqoo.forum.entity.Moderator" column="moderator_id"/>

</set>


版块和版主是多对多关系,现在根据版主名来搜索版块

查询代码:

public List<Module> showModuleList(final PageVO page, final Module module)
			throws Exception {
		// TODO Auto-generated method stub
		try {
			@SuppressWarnings("rawtypes")
			List<Module> list = this.getHibernateTemplate().executeFind(
					new HibernateCallback() {
						public Object doInHibernate(Session session)
								throws HibernateException {
							Criteria criteria=getSession().createCriteria(Module.class);
							if (null != module) {
								
								//if(null!=module.getModerators()){
								if(null!=module.getAdmin() && !"".equals(module.getAdmin())){
									criteria.createAlias("moderators", "mod")
									     .add(Restrictions.eq("mod.user", module.getAdmin()));
								}
								
								if (null != module.getName()
										&& !module.getName().equals("")) {
									criteria.add(Restrictions.like("name", "%"
											+ module.getName() + "%"));
								}
								if (null != module.getPackage_name()
										&& !module.getPackage_name().equals("")) {
									criteria.add(Restrictions.like(
											"package_name",
											"%" + module.getPackage_name()
													+ "%"));
								}
								if(null!=module.getFromDate()&&!"".equals(module.getFromDate())){
									try {
										criteria.add(Restrictions.ge("add_date",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(module.getFromDate())));
									} catch (ParseException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
								}
								if(null!=module.getToDate()&&!"".equals(module.getToDate())){
									try {
										criteria.add(Restrictions.le("add_date",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(module.getToDate())));
									} catch (ParseException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
								}
							}
							criteria.addOrder(Order.desc("id"));
							criteria.setFirstResult((page.getCurrentPageNum() - 1)
									* page.getNumPerPage());
							criteria.setMaxResults(page.getNumPerPage());
							List<Module> result = criteria.list();
                           
							/*
							Criteria criteria = session
									.createCriteria(Module.class);
							if (null != module) {
								if (null != module.getName()
										&& !module.getName().equals("")) {
									criteria.add(Restrictions.like("name", "%"
											+ module.getName() + "%"));
								}
								if (null != module.getPackage_name()
										&& !module.getPackage_name().equals("")) {
									criteria.add(Restrictions.like(
											"package_name",
											"%" + module.getPackage_name()
													+ "%"));
								}
								if(null!=module.getFromDate()&&!"".equals(module.getFromDate())){
									try {
										criteria.add(Restrictions.ge("add_date",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(module.getFromDate())));
									} catch (ParseException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
								}
								if(null!=module.getToDate()&&!"".equals(module.getToDate())){
									try {
										criteria.add(Restrictions.le("add_date",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(module.getToDate())));
									} catch (ParseException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
								}
							}
							criteria.addOrder(Order.desc("id"));
							criteria.setFirstResult((page.getCurrentPageNum() - 1)
									* page.getNumPerPage());
							criteria.setMaxResults(page.getNumPerPage());
							List<Module> result = criteria.list();*/
							
							//根据版主名
							
							/*for(Module mo:result){
								if(null!=mo.getModerators()){
									for(Moderator mod:mo.getModerators()){
										System.out.println("***="+mod.getUser());
									}
								}
							}*/
							
							
							return result;
						}
					});
			if (null != list && list.size() > 0) {
				return list;
			} else {
				return null;
			}
		} catch (Exception e) {
			throw e;
		}
	}



抱歉!评论已关闭.