public class ItemVenda implements Serializable {
@EmbeddedId
/*Encapsula ItemId e VendaId */
protected ItemVendaPK itemVendaPK;
...
Quando tento salvar ocorre o seguinte problema:
"Cannot add or update a child row: a foreign key constraint fails … FOREIGN KEY (VENDA_ID) REFERENCES venda (VENDA_ID)"
Isso ocorre porque eu seto somente o campo itemVendaPK.itemId.
O que eu esperava que acontecesse, era que o Hibernate ja configurasse o campo itemVendaPK.vendaId
automaticamente, sem eu precisar gravar primeiro a venda e depois os itens separadamente.
Hibernate: insert into venda (TOTAL_VENDA) values (?)
Hibernate: insert into item_venda (PRECO, PRECO_TOTAL, PRODUTO_ID, QUANTIDADE, ITEM_ID, VENDA_ID) values (?, ?, ?, ?, ?, ?)
27/10/2007 12:05:48 org.hibernate.type.NullableType nullSafeSet
INFO: could not bind value ‘null’ to parameter: 7; Parameter index out of range (7 > number of parameters, which is 6).
…
…
org.hibernate.exception.GenericJDBCException: could not insert: [appTeste.ItemVenda]
…
…
Caused by: java.sql.SQLException: Parameter index out of range (7 > number of parameters, which is 6).
Cara, não desiste tão rápido. Quando eu aprendia as coisas, levava era dias a fio. E olha que Java, na minha época, num era essa baba de ter tantos livros e revistas espalhadas por ai (sem contar escolas e profissionais bons).
Bom, dei uma olhada por cima, e acredito que você ainda precisa alterar algumas coisas:
Espero que assim funcione, mas eu não desisti não, contrário disso, estou
cada vez mais ansioso pra fazer isso funcionar, mas eh que realmente estou
sem tempo. Amanhã tirarei um tempo pra fazer esse teste e certamente postarei aqui o resultado.
Creio que ainda mais importante do que livros, revistas e etc., são forums
como esse, e com pessoas interessadas a compartilhar o conhecimento.
Espero que assim funcione, mas eu não desisti não, contrário disso, estou
cada vez mais ansioso pra fazer isso funcionar, mas eh que realmente estou
sem tempo. Amanhã tirarei um tempo pra fazer esse teste e certamente postarei aqui o resultado.
Creio que ainda mais importante do que livros, revistas e etc., são forums
como esse, e com pessoas interessadas a compartilhar o conhecimento.
Estou realmente muito grato,
Um abraço![/quote]
Belezinha Geraldo?
Gostaria de saber se resolveu seu problema? To com um problema parecido.
Estou fazendo uma sistema que vai possir um relacionamento @OneToMany
mais estou com duvidas de como devera ficar no banco de dados,
se alguem poder me mostra como fica o relacionamento FICO MUITO GRATO!
EX: Tenho uma tabela Venda, Produto. A tabela venda vai ter uma lista de produtos
porém ItemVenda não possui Pk, mas possui Fk referenciando a Pk da entidade Venda.
exemplo de como as tabelas foram criadas no bd manualmente.
CREATE TABLE "HR"."MSS_VENDA" (
"VENDA_ID" NUMBER(10,0) NOT NULL ENABLE,
"NOME" VARCHAR2(64 BYTE) NOT NULL ENABLE,
CONSTRAINT "MSSVENDA_PK" PRIMARY KEY ("VENDA_ID")
);
CREATE TABLE "HR"."MSS_ITEM_VENDA" (
"VENDA_ID" NUMBER(10,0) NOT NULL ENABLE,
"CONTATO" VARCHAR2(64 BYTE) NOT NULL ENABLE,
CONSTRAINT "MSSITEMVENDA_FK" FOREIGN KEY ("VENDA_ID")
REFERENCES "HR"."MSS_VENDA" ("VENDA_ID") ON DELETE CASCADE ENABLE
);
A ultima correção que o ajaxinaction postou funcionou perfeito para meu cenario, onde as tabelas já estavam previamente criadas da maneira como falei acima.
Se eu mando o JPA criar as tabelas a partir das entidades acontece um erro de integridade, não sei direito o porque, acredito que seja pq o JPA quando cria a tabela da entidade ItemVenda coloca a Fk também como Pk.