Varios Parametros Hql

Galera seguinte estou criando um método genérico onde eu possa setar diversos parâmetros para meu sql mais não quero me preocupar com o tipo de dados que está vindo. Até ai blz, eu estou usando HQL criei o método porém eu faço minhas validações mais uso somente um setParameter ai se eu passar minha lista com 2 parametros por exemplo o primeiro é substituído pelo segundo, existem algo que eu possa fazer para anexar quantos parâmetros quiser, existe alguma propriedade dele ou alguma maneira de fazer isso?

Desde já agradeço…

vc quer fazer uma querie dinamica que recebe um numero variavel de parametros?

Isso na verdade um método onde eu possa passar o sql e quantos parametros forem necessarios, comecei fazer um mais não deu certo, da uma olhada

public List<T> executeHql(ArrayList<T> parametros)throws Exception{
		try{
			List<T> objts;
			objts = null;	
			Query q = session.createQuery(parametros.get(0).toString());
			for(int i=1; i < parametros.size(); i++){																	
				q.setParameter(parametros.get(i).toString(), parametros.get(i+1).toString());
				i++;								
			}
			objts = q.list();
		return objts;
		}catch(Exception e){
			throw new Exception(e);
		}finally{
			session.close();
		}
	}

sei la ate que ponto eh vantagem ficar economizando metodos. eh melhor o metodo no lugar certo :slight_smile:

eu fiz uma vez assim


	...
		
		String sql = "from EspacoFisico where reservavel='s' and itemOrganizacional.id = :itemid and ";
		
		Map<String, Object> params = new Hashtable<String, Object>();
		params.put("itemid", espacoFisico.getItemOrganizacional().getId());
		
		if(espacoFisico.getCapacidade()!= 0){
			params.put("capacidade", espacoFisico.getCapacidade());
			sql = sql + "capacidade >= :capacidade and ";
		}
		if(espacoFisico.getTipo().getId() != 0){
			params.put("tipoid", espacoFisico.getTipo().getId());
			sql = sql + "tipo.id = :tipoid and ";
		}
		if(espacoFisico.getAcessoEspecial().equals("s")){
			params.put("acessoEspecial", espacoFisico.getAcessoEspecial());
			sql = sql + "acessoEspecial = :acessoEspecial and ";
		}
		
		sql = sql + "(1=1)";
		
	...

Na verdade não é bem isso que quero fazer, na verdade o método tem que ser genérico no caso ele não vai saber nem o nome do parametro para usar o Map
tem que montar em tempo de execução, eu tava pensando em usar o setParameter(Object[], Types[]) mais não estou conseguindo montar ele, vc sabe como
usá-lo???