Varios Parametros Hql

4 respostas
diogoprosoft

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…

4 Respostas

idev4web

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

diogoprosoft

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();
		}
	}
idev4web

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)";
		
	...
diogoprosoft

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???

Criado 28 de setembro de 2010
Ultima resposta 28 de set. de 2010
Respostas 4
Participantes 2