Alter table com hibernate ?[resolvido]

8 respostas
dijava

boa tarde pessoal como como eu faco para atualizar uma tabela ja existente com hibernate?

ex: tenho um tabela ja rodando e tive que mudar a classe, colocando mais um parametro, mas em producao ja tem dados nela e tenho q alterala sem perder os dados(“alter table”).

e tb tenho novos objetos ocasionando novas tabelas como eu posso criar a novas e altera as ja exitentes com hibernate ?

eu uso para criar assim :

SchemaExport se = new SchemaExport(cfg);		
 se.create(true, true);

mas ela da drop em tudo e cria de novo nao serve para mim

8 Respostas

aeciovc

se vc configurar seu hibernate.cfg.xml com essa tag acho que irá funcionar:

<property name="hibernate.hbm2ddl.auto">update</property>
dijava

eu lembro de algo assim mais fiz um teste aqui e ele fez drop table

aeciovc

no lugar de fazer isso via código: coloque apenas a tag XML.

SchemaExport se = new SchemaExport(cfg); se.create(true, true);

romarcio

dijava:
eu lembro de algo assim mais fiz um teste aqui e ele fez drop table

a propriedade <property name="hibernate.hbm2ddl.auto">update</property> setada com UPDATE, não apaga seus dados, ela somente cria a nova coluna na tabela.

Para apagar seria usando o CREATE, pq dai ele apaga e cria de novo, pelo que sei.

Mas se é um banco de produção, nem se deve usar essa função do hibernate, pq o banco deve ser alterado pelo DBA da empresa. Tem certeza que vc pode fazer isso? Sem que seja feito pelo DBA?

dijava

na verdade o dba daqui é de oracle e é tercerizado !

este banco é de um sistema paralelo que é utilizado mais para administracao na qual quem faz manutencao sou eu, e é em postgres, na verdade eu posso fazer manualmente essas modificações mas não quero, sei q é possivel fazer pelo hibernate e testei na minha maquina mesmo e ele fez drop table !

romarcio

Acho que quando vc seta aquela propriedade como UPDATE, ela só cria colunas em tabelas já existentes.

Se tiver tabela nova, o UPDATE não vai criar. Dai teria que usar o CREATE, só que esse deleta seus dados.

O que pode fazer, é gerar um script com os inserts do banco, e depois rodar ele para popular as colunas novamente, se forem apagados os dados antes.

aeciovc

com o UPDATE ele tanto cria quanto atualiza!

ele só não faz o que o CREATE faria… sempre criar!

já update não recria, apenas criando se não houver!!

dijava

consegui é como vc tinha falado nao rodei coloquei a tag no xml e nao hora que é criado o session factory ele faz o update !!! vlw ai abrigado !

Criado 15 de julho de 2010
Ultima resposta 15 de jul. de 2010
Respostas 8
Participantes 3