(Resolvido) Problema com Replace HQL + boolean

Pessoal, adicionei um replace na minha consulta e ela parou de funcionar. Não consegui achar o erro, pois, nunca utilizei o replace… O que pode ta errado ?

from Tarefa f replace(f.segurancaInformacao, 'true', 'Sim') 
 where f.tarefa= f.tarefa order by f.statusTarefa.statusTarefa, f.tarefa desc

Obrigado :slight_smile:

A coluna segurancaInformacao é String?
Utilize a função CASE para resolver oque você precisa.

1 curtida

Não! A coluna segurancaInformacao é boolean (true ou false). CASE? desconheço essa função.
Como você faria ?

Quando o campo segurancaInformacao for true deve imprimir “Sim”, quando for false deve imprimir “Não”. É disso que eu preciso. Posso resolver isso com replace, não ? Se não, pode me dizer uma solução?

Obrigado :slight_smile:

Na doc do mysql tem a explicação de como usar o CASE e alguns exemplos

1 curtida

em relação ao replace, ele funciona se o campo for boolean ?

O replace so funciona para campos strings.
Utilize o case para solucionar o seu problema, ele vai funcionar da seguinte forma
caso campo seja true entao ‘Sim’ senao ‘Não’.

1 curtida

Então posso resolver o problema modificando apenas a consulta, usando o case. Vlw!

Vou ver como o case funciona

Resolvido… utilizei um converter para resolver o problema…

@FacesConverter(value ="booleanConverter")


public class BooleanConverter implements Converter{


	    @Override
	    public Object getAsObject(FacesContext context, UIComponent component, String value) {
	       return value;
	    }
	    @Override
	    public String getAsString(FacesContext context, UIComponent component, Object value) {
	        Boolean condition = (Boolean) value;
	        if (condition) {
	            return "Sim";
	        } else {
	            return "Não";
	        }
	    

	    }
}