実現したいこと
前提
Spring boot初心者でPostgreSQLやPostGISを扱うのは初めてです。
Spring bootでgeometry(Point,3857)の属性のデータなどをデータベースから取得する際に以下のような例外が発生しデータの取得に失敗します。
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.orm.jpa.JpaSystemException: could not deserialize] with root cause
該当のソースコード
Java
1import org.postgis.LineString;2import org.postgis.Point;3 4import jakarta.persistence.Column;5import jakarta.persistence.Entity;6import jakarta.persistence.GeneratedValue;7import jakarta.persistence.GenerationType;8import jakarta.persistence.Id;9import jakarta.persistence.Table;10import lombok.Data;11 12@Data13@Entity14@Table(name = "route")15public class RouteModel {16 @Id17 @GeneratedValue(strategy = GenerationType.IDENTITY)18 @Column(name="id")19 private Integer id;20 21 @Column(name = "name")22 private String name;23 24 @Column(name = "start_point", columnDefinition = "Point")25 private Point start_point;26 27 @Column(name = "end_point", columnDefinition = "Point")28 private Point end_point;29 30 @Column(name = "waypoints", columnDefinition = "LineString")31 private LineString waypoints;32 33 @Column(name = "time")34 private Integer time;35}
java
1import org.springframework.data.jpa.repository.JpaRepository;2 3import com.example.divers.model.RouteModel;4 5public interface RouteRepository extends JpaRepository<RouteModel,Integer>{}
試したこと
PostGISを使用していないテーブルだとデータを取得できたというのと、エラー内容からデータ型の変換に失敗したような内容だったためデータ型が間違っているか追加で記述するものがあるのではないかと思い
model側のデータ型をGeometryにしてみたり
Hibernate-spatial(version:5.4.32.Final)を入れてみたのですが
Geometryの場合は同じ例外が
Hibernate-spatialの場合だと起動しなくなりました。
Hibernate-spatialを使用したものを調べて試してみたのですがどれも動かずお手上げ状態になったので質問させてもらいました。
補足情報(FW/ツールのバージョンなど)
使用ツール:Eclipse、Docker
Dockerではmdillon/postgisイメージを使用してデータベースのテスト環境を構築しています。
xml
1<dependencies>2 <dependency>3 <groupId>org.springframework.boot</groupId>4 <artifactId>spring-boot-starter-data-jpa</artifactId>5 </dependency>6 <dependency>7 <groupId>org.springframework.boot</groupId>8 <artifactId>spring-boot-starter-thymeleaf</artifactId>9 </dependency>10 <dependency>11 <groupId>org.springframework.boot</groupId>12 <artifactId>spring-boot-starter-web</artifactId>13 </dependency>14 15 <dependency>16 <groupId>org.springframework.boot</groupId>17 <artifactId>spring-boot-devtools</artifactId>18 <scope>runtime</scope>19 <optional>true</optional>20 </dependency>21 <dependency>22 <groupId>org.postgresql</groupId>23 <artifactId>postgresql</artifactId>24 <scope>runtime</scope>25 </dependency>26 <dependency>27 <groupId>org.projectlombok</groupId>28 <artifactId>lombok</artifactId>29 <optional>true</optional>30 </dependency>31 <dependency>32 <groupId>org.springframework.boot</groupId>33 <artifactId>spring-boot-starter-test</artifactId>34 <scope>test</scope>35 </dependency>36 <dependency>37 <groupId>net.postgis</groupId>38 <artifactId>postgis-jdbc</artifactId>39 <version>2.5.1</version>40 </dependency>41 <dependency>42 <groupId>net.postgis</groupId>43 <artifactId>postgis-geometry</artifactId>44 <version>2.5.1</version>45 </dependency>46 <dependency>47 <groupId>com.google.maps</groupId>48 <artifactId>google-maps-services</artifactId>49 <version>0.2.5</version>50 </dependency>

0 コメント