java - 获取数据库大小 Java(JPA)

标签 java jpa

我已经知道像下面这样的普通 SQL 查询将返回 my_db 的大小(以兆字节为单位)。

SELECT SUM(data_length + index_length ) /1024 /1024 FROM information_schema.TABLES WHERE table_schema = 'my_db' GROUP BY table_schema"

尽管我无法在 Java 上下文中执行此操作,也没有在 JPA 中找到其等效项。

有什么方法可以在不使用 native SQL 的情况下获得数据库大小,就像我正在尝试的那样?

我尝试了以下操作,但出现与 sql 语法相关的异常。

public Long dbSize(){
    TypedQuery<Long> query = em.createQuery(
            "SELECT SUM(data_length + index_length ) /1024 /1024 FROM information_schema.TABLES WHERE table_schema = 'my_db' GROUP BY table_schema" , Long.class);
    long size = query.getSingleResult();
    return size;
}

我做错了什么?欢迎任何帮助/建议。

最佳答案

尝试使用 em.createNativeQuery(),这应该用于纯 SQL 查询。

关于java - 获取数据库大小 Java(JPA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28836074/

相关文章:

java - 使用 javax.ws.rs 符号在项目中集成扩展 HttpServlet 的类

java - 无法从 String 反序列化 `java.time.LocalDate` 类型的值

java - Web 应用的更新中心和数据库变更管理

java - 为什么在使用 EasyMock.createMock 创建 mock 时 junit 测试失败?

java - Hibernate:没有为实体指定标识符(是的,我已经用@Id装饰了......)

hibernate - java.lang.NoSuchMethodError : javax. persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

java - JPA多对多: Adding existing object to another object

java - 从 PostgreSQL 流式传输行(带获取大小)

java - 在回收站列表中处理过期的有效方法

java - 对齐使用流程布局的两个面板上的组件