Problemas com Hibernate 2.1.7!

Oi pessoal,

Possuo uma aplicação comercial em Linux que inicialmente foi desenvolvida com C++, e o seu BD em PostgreSQL.

Agora estou desenvolvendo algumas telas do sistema de retaguarda, e para isso estou usando Java + Hibernate.

A minha dúvida é a seguinte: já possuo o BD com todas as tabelas e seus dados, mas toda vez que inicio a aplicação o Hibernate insiste em criar as FOREIGN KEYS nas minhas tabelas, mas as mesmas já existem, ou seja, fico com FOREIGN KEYS CONSTRAINTS duplicadas.

Observem abaixo a tabela original (antes de rodar a aplicação em Java que estou desenvolvendo):

db_multuspdv=# \d tb_produto
                                          Table "public.tb_produto"
            Column             |         Type          |                      Modifiers                      
-------------------------------+-----------------------+-----------------------------------------------------
 id                            | integer               | not null default nextval('tb_produto_id_seq'::text)
 prod_descricao                | character varying(50) | not null
 prod_descricao_resumida       | character varying(24) | 
 prod_marca                    | smallint              | 
 prod_secao                    | smallint              | not null
 prod_venda_medida             | numeric(7,3)          | 
 prod_venda_unidade_medida     | smallint              | 
 prod_preco                    | numeric(9,2)          | 
 prod_estoque                  | integer               | 
 prod_vasilhame_medida         | numeric(7,3)          | 
 prod_vasilhame_unidade_medida | smallint              | 
 prod_tributo                  | smallint              | not null
Indexes:
    "tb_produto_pkey" primary key, btree (id)
Foreign-key constraints:
    "tb_produto_marca_fkey" FOREIGN KEY (prod_marca) REFERENCES tb_marca(id)
    "tb_produto_unidade_medida_fkey" FOREIGN KEY (prod_venda_unidade_medida) REFERENCES tb_unidade_medida(id)
    "tb_produto_secao_fkey" FOREIGN KEY (prod_secao) REFERENCES tb_secao(id)
    "tb_produto_vasilhame_unidade_medida_fkey" FOREIGN KEY (prod_vasilhame_unidade_medida) REFERENCES tb_unidade_medida(id)
    "tb_produto_tributo_fkey" FOREIGN KEY (prod_tributo) REFERENCES tb_tributo(id)

E agora, depois que executo a aplicação (observem a última linha da listagem abaixo):

db_multuspdv=# \d tb_produto
                                          Table "public.tb_produto"
            Column             |         Type          |                      Modifiers                      
-------------------------------+-----------------------+-----------------------------------------------------
 id                            | integer               | not null default nextval('tb_produto_id_seq'::text)
 prod_descricao                | character varying(50) | not null
 prod_descricao_resumida       | character varying(24) | 
 prod_marca                    | smallint              | 
 prod_secao                    | smallint              | not null
 prod_venda_medida             | numeric(7,3)          | 
 prod_venda_unidade_medida     | smallint              | 
 prod_preco                    | numeric(9,2)          | 
 prod_estoque                  | integer               | 
 prod_vasilhame_medida         | numeric(7,3)          | 
 prod_vasilhame_unidade_medida | smallint              | 
 prod_tributo                  | smallint              | not null
Indexes:
    "tb_produto_pkey" primary key, btree (id)
Foreign-key constraints:
    "tb_produto_marca_fkey" FOREIGN KEY (prod_marca) REFERENCES tb_marca(id)
    "tb_produto_unidade_medida_fkey" FOREIGN KEY (prod_venda_unidade_medida) REFERENCES tb_unidade_medida(id)
    "tb_produto_secao_fkey" FOREIGN KEY (prod_secao) REFERENCES tb_secao(id)
    "tb_produto_vasilhame_unidade_medida_fkey" FOREIGN KEY (prod_vasilhame_unidade_medida) REFERENCES tb_unidade_medida(id)
    "tb_produto_tributo_fkey" FOREIGN KEY (prod_tributo) REFERENCES tb_tributo(id)
    "fked9736284376bb54" FOREIGN KEY (prod_marca) REFERENCES tb_marca(id)

Como faço para desabilitar a criação das chaves estrangeiras?

Abraços,

Paulo Oliveira

Olá. Verifique se a propriedade “hibernate.hbm2ddl.auto” não está definida para “auto” no seu arquivo de configurações do hibernate. Em caso afirmativo o hibernate vai tentar atualizar / criar as estruturas das tabelas por conta própria. Talvez seja um começo para solucionar o seu problema.

Gabriel

Olá Gabriel,

Realmente! Essa opção estava no meu hibernate.cfg.xml.

Retirei-a e o Hibernate parou de tentar mexer no meu BD.

Grande abraço,

Paulo Oliveira