twitter
    Find out what I'm doing, Follow Me :)

sábado, 24 de abril de 2010

HQL para SQL (Java)

Quem já usou Hibernate sabe de alguma de suas limitações no momento de fazer alguma query, muitas vezes não entendemos o motivo de não trazer o resultado correto, para entender seria bom ver o código na linguagem SQL que ele montou. Esse código em Java faz isso, traz pra você a tradução do seu código HQL.

// Pega-se o seu provedor do seu objeto  EntityManager como sessão
org.hibernate.Session session = (org.hibernate.Session) getEntityManager().getDelegate();

//Objetos de auxilio para simular a execução e traduzir a query HQL
final QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
final SessionFactoryImplementor factory = (SessionFactoryImplementor) session.getSessionFactory();

String query = "Seu HQL aqui";

//Monta um tradutor de query
final QueryTranslator translator = translatorFactory.createQueryTranslator(query, query, Collections.EMPTY_MAP, factory);

translator.compile(Collections.EMPTY_MAP, false);

//Você pode exibir o resultado onde quiser
System.out.print(translator.getSQLString());

2 comentários: