Spring boot 如何在JpaRepository spring引导中使用postgresql数组_agg函数?

Spring boot 如何在JpaRepository spring引导中使用postgresql数组_agg函数?,spring-boot,spring-mvc,java-8,spring-data-jpa,Spring Boot,Spring Mvc,Java 8,Spring Data Jpa,我已经用postgresql创建了一个新的spring启动项目。我喜欢使用JPA存储库本机查询使用posgressql数组_agg(例如:get all department),但它在blow posted中出现了一些错误。我尝试了一些改变的解决方案,但无法获得预期的数据 错误: org.springframework.orm.jpa.JpaSystemException:没有JDBC类型的方言映射:2003; 嵌套异常为org.hibernate.MappingException:没有JDBC

我已经用postgresql创建了一个新的spring启动项目。我喜欢使用JPA存储库本机查询使用posgressql数组_agg(例如:get all department),但它在blow posted中出现了一些错误。我尝试了一些改变的解决方案,但无法获得预期的数据

错误

org.springframework.orm.jpa.JpaSystemException:没有JDBC类型的方言映射:2003; 嵌套异常为org.hibernate.MappingException:没有JDBC类型的方言映射:2003

应为:应获取数组或数据列表

@Repository
public interface PostGroupRepository extends JpaRepository<PostGroup, Integer> {

    @Query(value = "SELECT array_agg(department) FROM boxinfo;", nativeQuery = true)
    public Object[] getDept();
}
@存储库
公共接口PostGroupRepository扩展了JpaRepository{
@查询(value=“从boxinfo;中选择数组\集合(部门)”,nativeQuery=true)
公共对象[]getDept();
}

第一种解决方案是使用以下依赖项:

<dependency>
            <groupId>com.vladmihalcea</groupId>
            <artifactId>hibernate-types-52</artifactId>
            <version>2.11.1</version>
        </dependency>
并将此方言用作spring boot的application.yaml或application.properties中的hibernate方言

spring.jpa.properties.hibernate.dialect: <packageName>.CustomPostgreDialect
spring.jpa.properties.hibernate.dialogue:.CustomPostgreDialogue

第二种解决方案是,如果您不想使用依赖项,您可以自己编写自定义类型,并用如上所示的方言注册它。

您尝试了哪些方法?由于postgres返回数据类型text[]-JPA/Hibernate将不具有该数据类型。您需要进行自定义数据类型映射。我只是尝试了其他查询。如果可能,可以给出一些自定义数据映射的示例@Lucia您可以检查此项检查如下well@Lucia是否可以直接在本机查询本身中获取,而无需添加其他工作?
spring.jpa.properties.hibernate.dialect: <packageName>.CustomPostgreDialect