简体   繁体   English

HQL Hibernate中的“显示数据库”

[英]“show databases” in HQL Hibernate

I am trying to list all databases in MySQL using Hibernate. 我正在尝试使用Hibernate列出MySQL中的所有数据库。 But I am getting below error. 但是我越来越错误了。

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)

Below is my code 下面是我的代码

    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();

show databases is not a valid JPQL statement and dependent on the database you are using. show databases不是有效的JPQL语句,并且取决于您使用的数据库。 You can use a native query session.createSQLQuery(...) to talk to the database directly, but in this case, you will lose the Hibernate advantage of database independent implementation. 您可以使用本机查询session.createSQLQuery(...)直接与数据库对话,但是在这种情况下,您将失去数据库独立实现的Hibernate优势。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM