当前位置: 首页 > 知识库问答 >
问题:

如何使Spring靴,空间冬眠和后座工作?

鲜于阳成
2023-03-14

我无法在创建模式下以Hibernate空间启动我的Spring启动(2.6.3)项目。它告诉我类型“几何不存在”。几何类型来自Hibernate空间库。

但是,我应用了所有必要的东西:

>

  • 添加Hibernate空间依赖项(我的版本5.6.3.Final)

    使用组织.hibernate.空间.方言.postgis.Postgis方言 此外,该类已被弃用,文档对应于相同的版本,它仍然指示使用它,我不明白任何东西(https://docs.jboss.org/hibernate/orm/5.6/userguide /html_single/Hibernate_User_Guide.html#spatial)

    使用geolatte组或jts组中的几何类型,尽管我有一个错误,它无法创建表,因为类型“几何不存在”。

    这是我的maven依赖项:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-spatial</artifactId>
            <version>5.6.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.3.1</version>
        </dependency>
        <!--<dependency>
            <groupId>org.locationtech.jts</groupId>
            <artifactId>jts-core</artifactId>
            <version>1.18.2</version>
        </dependency>-->
    
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

    我的物业:

    spring:
      datasource:
        driver-class-name: org.postgresql.Driver
        url: jdbc:postgresql://localhost:5432/postgres?currentSchema=hibernatespatial
        username: postgres
        password: 
      jpa:
        hibernate:
          ddl-auto: create
        show-sql: true
        properties:
          hibernate:
            dialect: org.hibernate.spatial.dialect.postgis.PostgisDialect
        open-in-view: false
        database-platform: org.hibernate.spatial.dialect.postgis.PostgisDialect
    

    我的实体类:

    package org.test.hibernate.spatial;
    
    
    import org.geolatte.geom.Geometry;
    
    import javax.persistence.*;
    
    @Entity
    @Table
    public class Person {
    
        @Id
        @GeneratedValue
        private Long id;
    
        private String name;
    
        private String lastname;
    
        private String age;
    
        private Geometry geom;
    
        public Geometry getGeom() {
            return geom;
        }
    
        public void setGeom(Geometry geom) {
            this.geom = geom;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getLastname() {
            return lastname;
        }
    
        public void setLastname(String lastname) {
            this.lastname = lastname;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    }
    

    我的存储库类:

    package org.test.hibernate.spatial;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface PersonRepository extends JpaRepository<Person, Long> {
    
    
    }
    

    我的引导类:

    package org.test.hibernate.spatial;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @SpringBootApplication
    @EnableJpaRepositories
    @EnableTransactionManagement
    public class TestHibernateSpatialApplication  implements CommandLineRunner {
    
        public static void main(String[] args) {
            SpringApplication.run(TestHibernateSpatialApplication.class, args);
        }
    
    
        public void run(String... args) throws Exception {
    
        }
    }
    
    

    我的postgreSQL数据库是14版本。有人知道出了什么问题吗?

  • 共有1个答案

    璩慎之
    2023-03-14

    PostGIS是Postgres扩展,需要为每个数据库启用:

    安装PostGIS后,需要在您要在其中使用它的每个单独数据库中启用(第3.3节,“创建空间数据库”)或升级(第3.4节,“升级空间数据库”)。
    […]
    在您要在空间上启用的数据库中运行以下SQL片段:

    CREATE EXTENSION IF NOT EXISTS plpgsql;  
    CREATE EXTENSION postgis;
    

    还要注意,扩展默认安装在默认模式中(例如< code>public)。因此,在使用< code>currentSchema选项时,一定不要意外地排除了安装postgis的模式。为了防止这种情况,可以将postgis模式添加到< code>currentSchema(例如< code > JDBC:PostgreSQL://localhost:5432/tst?currentSchema=app1,html" target="_blank">public),或将postgis移至首选方案。

     类似资料:
    • 将Hibernate空间升级到版本5.0.0.CR2后,以下声明不再起作用: 与一个: 如我所见,这个类不再存在于Jar文件中。几何类型发生了什么变化,它是如何被取代的?或者有另一个jar文件要包含吗? 编辑:澄清。我正在将Hibernate-Spatial与PostgreSQL-Postgis数据库结合使用。

    • 我是Spring MVC和HiberNate的新手,我的会话配置有问题。我是通过使用Hibernate来做到这一点的。我现在想做的是将在DAO中自动装配会话工厂。 这是应用程序上下文。xml - 这是完整的堆栈跟踪。 这是刀的代码 购物车控制器

    • 我跟着Spring走。io是一个关键的教程,可以让REST API与MySQL DB一起启动,一切都进展顺利。然而,我发现了一个我无法配置或解决的行为。 当我使用内置功能从PagingAndSortingRepository中检索资源时,生成的剩余资源会自动分页,并用有用的HAL链接(链接、self、搜索、链接资源等)进行封装。我想用这个。 当我实现我的控制器来定制PostMapping行为并引入

    • 问题内容: 他们幸福地结婚了吗? 我正在使用最新版本的hibernate(4)和1.3版的joda-time hibernate支持,我也相信这是当前的最新版本。 使用注释时,一切似乎都正常(按预期方式创建了日期列): 一起使用这些版本是否存在任何已知问题? Update Well证明已创建列,但无法填充任何数据: 处理程序处理失败; 嵌套异常是java.lang.AbstractMethodEr

    • 另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。