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 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 !