Estou com a seguinte dúvida, preciso gerar mais algumas tabelas com alguns relacionamentos com a seguinte classe.
public class GeraTabelaUtil {
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
System.out.println("------ CONECTADO NO BANCO COM HIBERNATE ------ ");
new SchemaExport(cfg).create(true, true);
}
}
Só que não pode de jeito nenhum dar um drop em todas as tabelas e recrialas pois tenho dados importantes, quero saber se ao colocar esse campo em meu hibernate.cfg.xml resolve o problema do drop
Boa tarde, já usei a instrução update no xml e ele não dropa as tabelas já existentes.
Mas se está com medo de fazer isso, use sua classe:
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
System.out.println("------ CONECTADO NO BANCO COM HIBERNATE ------ ");
new SchemaExport(cfg).create(true, true);
}
}
E indique apenas as classes que irão criar as novas tabelas.
Se você setou no xml as classes de mapeamento, deixe lá apenas as que você quer gerar. Depois de criadas, recoloque as classes retiradas.
[quote=Ace]Ainda está dropando!
:? [/quote]
Camarada, o problema é que com schema.export(true, true), sempre irá dropar.
Você não precisa desse cara para criar as tabelas.
Usando a propriedade hibernate.hbm2ddl.auto com valor update, as tabelas são criadas “on demand”, ou seja, quando for preciso (geralmente no primeiro uso do hibernate), em tempo de execução.
Então, adicione essa linha ao teu hibernate.cfg.xml e faça o projeto ser executado que as tabelas serão criadas.