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