java - HQL hibernate 中的 "show databases"

标签 java hibernate hql

我正在尝试使用 Hibernate 列出 MySQL 中的所有数据库。但我遇到了以下错误。

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

最佳答案

showdatabases 不是有效的 JPQL 语句,并且取决于您正在使用的数据库。您可以使用 native 查询 session.createSQLQuery(...) 直接与数据库对话,但在这种情况下,你将失去Hibernate独立于数据库实现的优势。

关于java - HQL hibernate 中的 "show databases",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779591/

相关文章:

用于连接非映射表的 Hibernate HQL

java - 获取Play框架可与Gradle和IntelliJ Idea一起使用

java - Hudson 2.0.1 和 Maven 2.2.1 找不到符号错误

java - 我可以在 DropWizard 中拥有多个配置文件吗?

java - 使用 Java 中的属性文件中的嵌套字段创建 map 或对象

java - 错误: No such column name.信息: HHH000327: Error performing load command : org. hibernate.exception.GenericJDBCException:

java - Hibernate 标准如何不加载子进程

java - Primefaces 数据表分页不起作用

java - HQL 中的日期限制

子查询中的 NHibernate HQL SELECT TOP