Jump to content
saca-rolhas

Identificar tabelas no Hibernate

Recommended Posts

saca-rolhas

Boas

estou a tentar fazer com que o Hibernate detecte se as tabelas mapeadas existem na base de dados a que se vai ligar e caso não existam , ou não estejam coerentes com a estrutura pretendida, fazer um update das tabelas.

Sei que o Hibernate escreve semelhante informação na consola do Java mas o que me dava realmente jeito é a possibilidade de agarrar tais ocorrências como excepções.

Tentei pesquisar, não encontrei nada... sugestões?


The worst part of censorship is ****

Share this post


Link to post
Share on other sites
aladino77
Map<String, ClassMetadata>  map = (Map<String, ClassMetadata>) sessionFactory.getAllClassMetadata();
SessionFactoryImpl sfImpl = (SessionFactoryImpl) sessionFactory;

for(String entityName : map.keySet()){
String tableName = ((AbstractEntityPersister)sfImpl.getEntityPersister(entityName)).getTableName();
System.out.println(entityName + "\t" + tableName);
}

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other sites
saca-rolhas

Obrigado pela resposta, contudo esse método só me apresenta os objectos mapeados pelo Hibernate (Ou seja todos os objectos que possuam um ficheiro .hbm.xml) e não mostra as tabelas criadas pelo Hibernate que estão mapeadas apenas nas relações entre outros objectos.

E mesmo se não existir as tabelas na base de dados o resultado do código é o mesmo. O que me é pretendido é obter dados semelhantes ao que é verificado pelo Hibernate na propriedade de update do hibernate.hbm2ddl.auto que verifica se existem as tabelas e se estão coerentes com os mapeamentos e actualiza-as caso contrário. O que eu pretendo que a minha aplicação faça é consoante certos caso actualizar ou não as tabelas ou seja por outras palavras eu quero ter controlo sobre a opção update e decidir o que deve ser updated ou não e saber o que não está consistente na base de dados. Isto tudo usando o hibernate porque posso usar a biblioteca java.sql para pedir isso ás bases de dados, no entanto por esse método teria de fazer queries diferentes para casa tipo de base de dados.

Edited by saca-rolhas

The worst part of censorship is ****

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.