2016-11-24 7 views
0

Hibernateを使用してMySQLのすべてのデータベースを一覧表示しようとしています。しかし、私はエラー以下になっています。以下はHQL Hibernateの "show databases"

Nov 24, 2016 11:50:27 AM org.hibernate.hql.internal.ast.ErrorCounter reportError 
ERROR: line 1:1: unexpected token: show 
Nov 24, 2016 11:50:27 AM org.hibernate.hql.internal.ast.ErrorCounter reportError 
ERROR: line 1:1: unexpected token: show 
line 1:1: unexpected token: show 
    at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:191) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:295) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88) 
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190) 
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) 
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) 
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796) 
    at TestHibernate.main(TestHibernate.java:40) 

私のコード

Configuration cfgObj = new Configuration(); 
    cfgObj.configure("MySQLhibernate.cfg.xml"); 
    servcRegObj = (ServiceRegistry) new StandardServiceRegistryBuilder().applySettings(cfgObj.getProperties()).build(); 
    SessionFactory sfObj = cfgObj.buildSessionFactory(servcRegObj); 

    Session session = sfObj.openSession(); 
    BSCTable bscTblObj = new BSCTable(); 

    Query qry = session.createQuery("show databases"); 
    List<Object> databaseList = qry.list(); 
    for(Object object : databaseList) 
    { 
     System.out.println(object); 
    } 
    session.close(); 
    sfObj.close(); 
+0

'show databases'は有効ではありませんHQL。そのようなベンダー固有のクエリをjdbcオブジェクトに対して直接実行するだけです。 Hibernateはあらゆる可能な方法でデータベースと対話するための銀色の弾丸ではありません。 – CollinD

答えて

0

show databasesが有効なJPQLステートメントと、使用しているデータベースに依存しないです。 session.createSQLQuery(...) ネイティブクエリを使用してデータベースと直接対話できますが、この場合、データベースに依存しない実装のHibernateの利点が失われます。

+0

その作業は現在...お手伝いいただきありがとうございます。 –