【问题标题】:how to use pg_column_size in hibernate?如何在休眠中使用 pg_column_size?
【发布时间】:2021-07-14 09:12:41
【问题描述】:

我正在尝试获取 postgresql 表中行的大小,我发现 pg_column_size 可以解决问题,但它不适用于休眠:

@Query("SELECT pg_column_size(t.*) as filesize FROM TABLE as t where name=:name")
int getSize(@Param("name") String name);

intellij 出现此错误:

或如预期的那样,得到 '('

我猜问题是hibernate不支持特定的postgresql查询,它只支持基本的sql查询。

那么有没有办法解决这个问题?如果没有,有没有办法在 java 中获取/估计 postgresql 行的大小?

【问题讨论】:

    标签: java spring postgresql hibernate jpa


    【解决方案1】:

    为了使用内置的 postgres 函数,您必须将 JPA 查询声明为 nativeQuery

    你应该先把query改成native(hibernate会直接执行query而不是jpa->sql generation)

    @Query(value="SELECT pg_column_size(t.*) as filesize FROM TABLE as t where name=:name",nativeQuery=true)
    int getSize(@Param("name") String name);
    

    还要加上正确的 TABLE 名称。

    【讨论】:

      【解决方案2】:

      在原生查询后添加 nativeQuery = true。

      @Query("SELECT pg_column_size(t.*) as filesize FROM users as t where t.name=:name",nativeQuery = true)
      

      使用上面的查询,希望这会起作用。

      【讨论】:

        猜你喜欢
        • 2015-11-07
        • 2014-07-03
        • 2010-12-17
        • 2019-02-23
        • 2011-02-09
        • 2023-03-17
        • 1970-01-01
        • 2016-05-17
        • 2013-10-19
        相关资源
        最近更新 更多