JPA ConstraintViolation... AJUDAAA!

16 respostas
L

Olá pessoal. estou com um problema aqui

Tenho uma entidade que está anotada com unique = true…portanto esse campo não pode ser duplicado.

Ao inserir um objeto com um nome existente igualzinho ele dá erro…só que ao inserir um nome igual só que com espaços diferente ele não identifica como sendo duplicado e deixa gravar no banco…

Outro problema é que eu não consigo pegar a excessão ConstrintViolation, pq???Alguém tem alguma solução???

Abraços!

Obrigado!!

16 Respostas

71C4700

Encontrei algo parecido !!!
Ehhhe
up nos foruns ???

fiaux

Se tá com espaço em branco não é igual… dá um trim antes de salvar.

L

Já encontrei tb mais ninguém deu uma solução legal…

Só dizem que esse exception não dá pra pegar com try catch …

Fiz uma solução bizarra aqui…carrego uma lista com objetos do banco, do um replaceAll e tiro os espaços, tiro os espação do objeto a ser inserido e comparo com equalsIgnoreCase(), mais é muito tosco…queria uma solução melhor…

Abraços!

fiaux

Você poderia, antes, verificar se o nome já existe e informar.

L

fiaux:
Se tá com espaço em branco não é igual… dá um trim antes de salvar.
.

Mais vc concorda que Lucas. é a mesma coisa que Lucas"espaço".

Afinal ao exibir o usuário não vê os espaços depois…

fiaux

l.cestarolli:
fiaux:
Se tá com espaço em branco não é igual… dá um trim antes de salvar.
.

Mais vc concorda que Lucas. é a mesma coisa que Lucas"espaço".

Afinal ao exibir o usuário não vê os espaços depois…

Cara, não concordo, não sou usário… por isso que você deve remover os espaços. Use trim().

71C4700

Mas acredito que o problema seja este, para nos é amesma coisa, mas a nivel de abstração são coisas diferentes !!!
Mas tenta arrumar direitinho o metodo toString(), acho que assim resolve !!!

L

fiaux:
l.cestarolli:
fiaux:
Se tá com espaço em branco não é igual… dá um trim antes de salvar.
.

Mais vc concorda que Lucas. é a mesma coisa que Lucas"espaço".

Afinal ao exibir o usuário não vê os espaços depois…

Cara, não concordo, não sou usário… por isso que você deve remover os espaços. Use trim().

Então mesmo usando o trim não resolve o problema…pq se tiver espaços no meio tb não dá certo…

e outra coisa como eu pego a exception ConstraintViolation…???

fiaux

Então mesmo usando o trim não resolve o problema…pq se tiver espaços no meio tb não dá certo…

e outra coisa como eu pego a exception ConstraintViolation…???


Sim, no meio não dá. Mas você pode criar algo para remover os espaços em branco. Para pegar a exception use um try catch.

L

fiaux:
Então mesmo usando o trim não resolve o problema…pq se tiver espaços no meio tb não dá certo…

e outra coisa como eu pego a exception ConstraintViolation…???


Sim, no meio não dá. Mas você pode criar algo para remover os espaços em branco. Para pegar a exception use um try catch.

O problema é que o try catch não pega essa…

L

fiaux:
Então mesmo usando o trim não resolve o problema…pq se tiver espaços no meio tb não dá certo…

e outra coisa como eu pego a exception ConstraintViolation…???


Sim, no meio não dá. Mas você pode criar algo para remover os espaços em branco. Para pegar a exception use um try catch.

Então eu criei algo…ta ai em cima…

o problema é que ta bizarro, queria algo melhor…

fiaux

Você poderia remover os espaços da maneira que criou, pegar esse nome sem espaços e buscar no banco para ver se já existe.

L

Pois é exatamente isso que estou fazendo…só que imagina 50000 registros…

Bizarro neh?

fiaux

Pois é exatamente isso que estou fazendo…só que imagina 50000 registros…

Bizarro neh?

Bizarro mesmo… você busca todos os registros? Bizarro mesmo… deixa o banco fazer isso cara, cria uma query.

L

Pois é exatamente isso que estou fazendo…só que imagina 50000 registros…

Bizarro neh?

Bizarro mesmo… você busca todos os registros? Bizarro mesmo… deixa o banco fazer isso cara, cria uma query.

Uma query pra verificar se existe???

Mais e os espaços?

fiaux

Eu havia respondido antes:

Criado 1 de setembro de 2008
Ultima resposta 1 de set. de 2008
Respostas 16
Participantes 3