todos os dados que eu pego do banco de dados vem com um monte de espaço no final, por ex.: vou pegar um nome de uma tabela clientes, ele vem assim: 'JOSÉ DA SILVA '.
Eu tento usar o método trim() da classe String, porém quando o dado que eu puxo do banco está vazio, ele da null pointer exception.
Como resolver isso?
Nenhuma consulta que o java faz no banco de dados altera a integridade ou formato dos mesmos. Se isto ocorrer, há uma falha na programação.
Provável é que a inserção dos dados esteja sendo realizada com este espaço.
Toda chamada à um método cujo objeto esteja nulo lançará NPE.
Assim, você é obrigado a ter certeza que o objeto nunca será nulo ou tratar, validando se o objeto é null ou não, antes de invocar um método.
não, os objetos não são criados com os espaços, no banco de dados eles ficam normais, porém quando pego eles pelo java eles vem com espaços em branco.
E se la no banco de dados ele estiver sem nada, ele vai pegar na mesma, só que vai pegar uma string nulla ("").
Ainda assim, acho muito estranho.
Nunca vi algo assim.
Qual é a BD e que tipo de dados usas na BD?
Já tive o mesmo problema num sistema onde eu não controlava a BD (Informix) e onde os campos eram CHAR e não VARCHAR
Ja tive esse problema usando o firebird e o postgres, e os campos que eu tento puchar que dão esse problema são do tipo varchar text e date…
Verifica se ele está nulo, se estiver, seta como uma variável vazia (String str = “”) señ tiver, faz o trim
não me faz sentido, só vi esse problema com o tipo de dados char. Se está retornando espaços no final tem algo errado.
Uma coisa, você usa JPA? O JPA reconheceu corretamente o tipo de dados que está inserindo no banco?
Uma sugestão é essa que o naomeencontro falou, verificar se a string é nula antes de fazer o trim.
if(str!=null)
str=str.trim();
Outra gambi seria fazer uma trigger que fizesse o trim antes de inserir na base de dados. Mas isso está com cara de que o jpa reconheceu os tipos de dados como Char.