Hibernate x integrity constraint

16 respostas
jason_bourne

Pessoal,

Esse erro seria de mapeamento errado de entidade ou seria pq não existe um determinado código na FK? é algo q tenho que corrigir no hibernate ou no banco?

16 Respostas

fiaux

ORA-02291: integrity constraint (string.string) violated - parent key not found
Cause: A foreign key value has no matching primary key value.
Action: Delete the foreign key or add a matching primary key.

No link http://ora-02291.ora-code.com/

Acho que você apontou (FK) para alguém que não existe.

jason_bourne

Então é algo relacionado ao banco??? não é algum relacionamento de entidades do hibernate que esqueci de fazer?

fiaux

Eu acredito que sim. Você fez um insert em uma tabela, que tem FK para outra. Lá na outra, não tem esse chave (PK) que você apontou. É banco.

jason_bourne

Mas pelo que vi esses campos não estão mapeados como fk na entidade:

public class ItemAtributoItemDomain implements Serializable, Cloneable {
	
	@Basic
	@Column(name = "COD_GRUPO_ATRIBUTO_ITEM", unique=true)
	private Long codGrupoAtributoItem;
	
	@Id
	@Version
	@Basic
	@Column(name = "COD_ATRIBUTO_ITEM")
	private Long codAtributoItem;
.
.
.
fiaux

No banco, CRP_ADM.FK_TRBIT_DOMAT_01 aponta pra quem?
Pode não estar mapeado na sua classe, mas no banco tem constraint, não tem?

jason_bourne

fiaux:
No banco, CRP_ADM.FK_TRBIT_DOMAT_01 aponta pra quem?
Pode não estar mapeado na sua classe, mas no banco tem constraint, não tem?

pros campos:

COD_GRUPO_ATRIBUTO_ITEM, COD_ATRIBUTO_ITEM

fiaux

Beleza, tem constraint. Então eu insisto, você deu insert num campo FK que aponta para um PK onde não existe matching value.

jason_bourne

Então o problema é banco?

fiaux

É no banco, mas não vejo como problema, você no seu insert violou uma constraint e o banco te barrou. É um id inválido em um dos seus atributos, o qual corresponde ao campo FK do banco.

jason_bourne

Não tem como prevenir q não aconteça isso no hibernate?

jason_bourne

Pq …pelo q vi …eu não teria que definir aqueles dois campos como sendo FK na classe ItemAtributoItemDomain ???

fiaux

Não tem como prevenir q não aconteça isso no hibernate?
Não sei, mas violar constraint é violar constraint com ou sem hibernate.

Pq …pelo q vi …eu não teria que definir aqueles dois campos como sendo FK na classe ItemAtributoItemDomain ???
Bom, pelo visto ele não te obriga. Eu usando hibernate não mapeio coluna FK com atributo Long, eu boto a classe que a FK aponta pra fazer o hibernate trazer. Uso a annotation de mapeamento.

jason_bourne

Como assim? :shock:

fiaux

http://www.hibernate.org/hib_docs/annotations/reference/en/html/

Mas não vamos discutir isso. Me diz, esse insert é decorrente de uma ação na aplicação? Alguém seleciona alguma coisa, o qual o id vai preencher aquele atributo que está mapeado para a coluna com FK a qual violou-se a constraint?

jason_bourne

http://www.hibernate.org/hib_docs/annotations/reference/en/html/

Mas não vamos discutir isso. Me diz, esse insert é decorrente de uma ação na aplicação? Alguém seleciona alguma coisa, o qual o id vai preencher aquele atributo que está mapeado para a coluna com FK a qual violou-se a constraint?

é de uma aplicação, mas eu não tenho como ver que valores estão setados, esta tudo (?,?,?) …vou pedir pra usuária me mandar que valores ela setou pra eu descobrir onde ta estourando essa FK

fiaux

Beleza, boa sorte.

Criado 29 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 16
Participantes 2