Boa tarde!

Estou usando o PostgreSQL 8.3 em um projeto - legado - que irá usar
Hibernate (eca!). Infelizmente não posso mudar isso pois é decisão do
arquiteto de software.

E infelizmente, o Hibernate não está aceitando o modelo que fiz de
banco. E o arquiteto de software está dizendo que o erro é do
PostgreSQL que permite a implementação de tal modelo (!). Isso é
inválido, uma vez que já testei em Sybase e DB2 e também não tive
problemas. Mas para ganhar a discussão, gostaria de uma segunda
opinião quanto ao caso. As tabelas são muito próximas disso:

CREATE TABLE COTACAO_ITEM(
        NUMCOTACAO INTEGER NOT NULL,
        CODBARITEM CHAR(13) NOT NULL
);
ALTER TABLE COTACAO_ITEM ADD PRIMARY KEY( NUMCOTACAO, CODBARITEM );

CREATE TABLE COTACAO_PARTICIPANTE(
        NUMCOTACAO INTEGER NOT NULL,
        CNPJFORN CHAR(14) NOT NULL
);
ALTER TABLE COTACAO_PARTICIPANTE ADD PRIMARY KEY( NUMCOTACAO, CNPJFORN );

CREATE TABLE COTACAO_ITEM_RETORNO(
        NUMCOTACAO INTEGER NOT NULL,
        CNPJFORN CHAR(14) NOT NULL,
        CODBARITEM CHAR(13) NOT NULL,
        PRECO  NUMERIC(15,2) NOT NULL
);
ALTER TABLE COTACAO_ITEM_RETORNO ADD PRIMARY KEY( NUMCOTACAO,
CNPJFORN, CODBARITEM );
ALTER TABLE COTACAO_ITEM_RETORNO ADD CONSTRAINT FK_ITEM FOREIGN KEY (
NUMCOTACAO, CODBARITEM ) REFERENCES COTACAO_ITEM( NUMCOTACAO,
CODBARITEM );
ALTER TABLE COTACAO_ITEM_RETORNO ADD CONSTRAINT FK_PARTICIPANTE
FOREIGN KEY ( NUMCOTACAO, CNPJFORN ) REFERENCES COTACAO_PARTICIPANTE(
NUMCOTACAO, CNPJFORN );

A explicação é a seguinte:

- Uma cotação tem um único número (é uma chave natural neste caso pois
cada cotação precisa ter um número, mesmo que gerado pelo banco).
- Uma cotação possui vários itens (COTACAO_ITEM);
- Uma cotação possui vários fornecedores participantes (COTACAO_PARTICIPANTE);
- Para cada combinação de item e fornecedor, deve haver apenas um
preço (COTACAO_ITEM_RETORNO);

Então... em banco de dados tudo corre da mandeira mais perfeita
possível, pois a coluna COTACAO_ITEM_RETORNO.NUMCOTACAO possui relação
com 2 FKs, uma para a tabela COTACAO_ITEM e outra para
COTACAO_PARTICIPANTE.

Mas o Hibernate não permite fazer relacionamento de uma mesma coluna
com duas FK's...

Então eu peço a vocês... posso mesmo dizer que o Hibernate é fraco
demais, ou altero o modelo?

-- 
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a