Setar Inteiro como Nulo?

2 respostas
G

Não sei se isso é possível, mais precisava fazer o seguinte:

Setar um atributo da classe que é inteiro como nulo, pelo seguinte motivo:

Tenho 2 FK´s na minha classe são elas cadcftvid e usuarioid ambas do tipo NULL no banco de dados,
quando eu tenho o cadcftvid eu não tenho o usuarioid e vice versa.

Antes de eu adicionar os 2 atributos na minha classe usuário, o cadastro funcionava normal inserindo
valor nulo nos 2 atributos, mais a partir do momento que inseri ambas em minha classe, estã dando
chave violada, a razão eu não sei, precisava setar um valor nulo para elas, algo do tipo:

if(tipo.equalsIgnoreCase("cliente")){
					RetornaCadcftvId rCI = new RetornaCadcftvId();
					usuario.setCadcftvid(rCI.retornaCadcftvId(nomeUsuario));
                    usuario.setUsuarioid(null); // sei que não posso fazer isso
} else if(tipo.equalsIgnoreCase("usuario")) {
					RetornaUsuarioId rUI = new RetornaUsuarioId();
					usuario.setUsuarioid(rUI.retornaUsuarioId(nomeUsuario));
                    usuario.setCadcftvid(null); // sei que não posso fazer isso
}

Estou usando o Hibernate para inserir os dados no banco ORACLE, e se eu não anular os atributos ele insere um valor
vazio que me retorna CHAVE DUPLICADA/VIOLAÇÃO DE INTEGRIDADE

Alguma sugestão para contornar esse problema?

2 Respostas

T

Você pode trocar o atributo de “int” para “Integer”? É que “int” não pode assumir valores nulos, mas “Integer” é um objeto e por conseguinte pode assumir valores nulos.

(Eu me lembro que o C#, acho que a partir da versão 2.0, permite isso de uma forma disfarçada. Se você trocar as declarações de seu programa de “int” para “int?” é possível ter um inteiro que assume valores nulos. A Sun deveria ter copiado isso quando criou essa história de “autoboxing” no Java 5.0.)

G

Perfeito!!! :smiley:

Foi só alterar o tipo int para Integer e funcionou…

Muito obrigado thingol !!!

Criado 12 de fevereiro de 2008
Ultima resposta 12 de fev. de 2008
Respostas 2
Participantes 2