Hibernate ManyToOne ForeignKey Nula

5 respostas
T

Pessoal, sou iniciante em mapeamento objeto relacional e gostaria de uma ajuda de vocês.

Tenho o seguinte cenário. Um objeto profissional que possui um estado civil. Só que este estado civil pode ser nulo, não é obrigatório. Tentei mapear da seguinte maneira:

@ManyToOne(cascade=CascadeType.PERSIST)
	@JoinColumn(name="idEstadoCivil")
	private EstadoCivil estadoCivil;

Quando tento cadastrar no banco com um estado civil existente tudo bem, porém quando tento cadastrar com um estado civil nulo ocorre o seguinte erro:

Alguém poderia me ajudar, estou um pouco perdido.

Muito Obrigado

5 Respostas

zoren

Não sei se te ajuda

mas uma das anotações que vc usa pra mapear os campo tem um atributo nullable, ai é só setar true

T

Zoren, já tentei essa possibilidade, porém o erro continua o mesmo. O que parece é que o hibernate tem dificuldades em tratar um atributo da minha classe quando este é nulo, mesmo que eu tenha interesse que isso aconteça.

zoren:
Não sei se te ajuda

mas uma das anotações que vc usa pra mapear os campo tem um atributo nullable, ai é só setar true

ralphsilver

quando vc dá um cascade type PERSIST, vc está falando que na hora de persistir ele gravaria a entidade que está sendo gravada e o relacionamento em questão. A sintaxe correta é:

@ManyToOne @JoinColumn(name="<nome da coluna>", referencedColumnName="<nome da coluna que referencia>") private EstadoCivil estadoCivil;

e não esqueça que na classe EstadoCivil vc tbm tem que fazer um relacionamento @OneToMany para essa classe.

T

Obrigado, ralphsilver, vou testar.

ralphsilver:
quando vc dá um cascade type PERSIST, vc está falando que na hora de persistir ele gravaria a entidade que está sendo gravada e o relacionamento em questão. A sintaxe correta é:

@ManyToOne @JoinColumn(name="<nome da coluna>", referencedColumnName="<nome da coluna que referencia>") private EstadoCivil estadoCivil;

e não esqueça que na classe EstadoCivil vc tbm tem que fazer um relacionamento @OneToMany para essa classe.

Kleber-rr

Eae thiago, funcionou?? conseguiu fazer com que ele receba o nulo no teu relacionamento??

thiago_algo:
Obrigado, ralphsilver, vou testar.

ralphsilver:
quando vc dá um cascade type PERSIST, vc está falando que na hora de persistir ele gravaria a entidade que está sendo gravada e o relacionamento em questão. A sintaxe correta é:

@ManyToOne @JoinColumn(name="<nome da coluna>", referencedColumnName="<nome da coluna que referencia>") private EstadoCivil estadoCivil;

e não esqueça que na classe EstadoCivil vc tbm tem que fazer um relacionamento @OneToMany para essa classe.

Criado 17 de setembro de 2009
Ultima resposta 30 de jul. de 2010
Respostas 5
Participantes 4