Vraptor tratar valor []

9 respostas
adrianohardcore

Boa tarde , tenho na minha tabela do banco de dados , um campo char de uma posição não nula , que quando ela esta vazia ela me retorna um caracter estranho que parece uma caixa [] no jsp . Este campo esta mapeado como String de uma posição no hibernate e ja tentei char tambem e ele continua vindo [] quando o campo está vazio.Alguem sabe como tratar este campo , pois um simples if campo == null ou if campo == " " não identifica?

9 Respostas

Lucas_Cavalcanti

ele deve estar vindo como 0 (o char zero):

if (campoChar != 0)

ou ainda um ‘0x0’ ou algo do tipo.

adrianohardcore

Acho que você não entendeu , o campo esta char somente no banco de dados , na minha classe modelo ela esta como String , pois quero usar ENUM para definir os valores.

Lucas_Cavalcanti

pq vc não usa uma enum ao invés de string no seu modelo?

o hibernate sabe mapear isso…

em todo caso, “\0” talvez funcionaria

adrianohardcore

Coloquei o Enum direto no modelo como sugeriu , mas da erro quando o valor é vazio :
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.IllegalArgumentException: Unknown name value for enum class model.common.Confirmacao

Se não me engano o problema deve ser porque o valor é nulo ou vazio , mas como definir um valor padrão para o Enum quando este for vazio ?

adrianohardcore

Fiz esta big gambiarra :

public String getUsrHab() {
		if (usrHab != "S" || usrHab != "N"){
			usrHab =  "N";
		}
		return usrHab;
	}

Este funcionou!

Tentei fazer tambem :

public Confirmacao getUsrHab() {		
		if (usrHab != Confirmacao.N || usrHab != Confirmacao.S){
			usrHab = Confirmacao.N;
		}
		return usrHab;
	}

Mas usando Enum dá erro antes mesmo de executar o método get!

Favor se alguem tiver uma solução mais elegante , favor me passe !

Lucas_Cavalcanti

vc consegue ver qual é o char que fica no banco caso não exista? não tem como transformar em null?

adrianohardcore

Lucas Cavalcanti:
vc consegue ver qual é o char que fica no banco caso não exista? não tem como transformar em null?
No banco de dados esta gravado vazio (sem nada no campo).A estrutura do banco de dados não posso alterar , pois é usado num sistema existente em Vb.Só para constar , o banco de dados é o MS Sql Server 2005 .Estou encontrando outras dificuldades por causa desse banco legado , tipo quase todos os campos são Not Null , quase todos os campos textos são char em vez de varchar , e não tem chave estrangeira , alem de ter uma infinidade de colunas para cada tabela !

Lucas_Cavalcanti

nesse caso, deixa sem enum mesmo, pelo menos no atributo da entidade (daí vc deixa enum no getter e setter e converte)… daí pelo menos dá pra vc controlar isso.

adrianohardcore

Obrigado ! Acho que vou empurrando esses problemas para debaixo do tapete , e quando tiver um sistema mais redondo irei tentar mudar a estrutura do banco de dados e a cabeça do patrão !!

Criado 21 de março de 2012
Ultima resposta 21 de mar. de 2012
Respostas 9
Participantes 2