【问题标题】:execute a query using entity manager使用实体管理器执行查询
【发布时间】:2016-07-02 09:45:25
【问题描述】:

我有一个查询来获取我拥有的数据库的大小。 我写了以下内容:

@SuppressWarnings("unchecked")
List<Long> results = (List<Long>) em.createQuery("SELECT sum( data_length + index_length ) / 1024 / 1024 \"DataBaseSizeinMB\" FROM information_schema.TABLES GROUP BY table_schema ").getResultList();

其中emEntityManager。查询在phpadmin 中成功运行。但是当我在我的java 代码中运行它时,我得到了exception

编辑: 答案是这样的:

List<Object> list = (List<Object>) em.createNativeQuery(
         "SELECT sum( data_length + index_length ) / 1024 / 1024 FROM information_schema.TABLES GROUP BY table_schema "
).getResultList();


for (Object record : list) {
    double sum = (double) Double.parseDouble(record.toString());
    System.out.println(sum);
}

【问题讨论】:

  • 你得到了什么异常?
  • 请添加StackTrace .. :)
  • 现在有痕迹了。

标签: java jpa entitymanager


【解决方案1】:

它适用于 phpmyadmin,因为它是本机查询。尝试使用em.createNativeQuery()。该方法应该用于普通的 SQL 查询。 em.createQuery() 接受用 JPQL(Java 持久性查询语言)编写的查询。

createNativeQuery(String sqlString)的文档:

@param sqlString 原生 SQL 查询字符串

createQuery(String qlString)的文档:

@param qlString 一个 Java 持久性查询字符串

【讨论】:

    【解决方案2】:

    它可能是“DataBaseSizeinMB”

    尝试删除它。

    此外,您应该始终在此处发布堆栈跟踪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 2014-09-13
      • 2011-11-23
      • 2018-10-28
      • 2013-05-24
      • 2019-10-06
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多