For me, the data was being stored as expected in PostgreSQL, but retrieving it using a REST API was failing with Deserialization error.
This is what worked for me with PostgreSQL 12 & Spring Boot.
Included this in the application.properties file
spring.jpa.database-platform=org.hibernate.spatial.dialect.postgis.PostgisDialect
pom.xml changes
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.20.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.4.20.Final</version>
</dependency>
<dependency>
<groupId>org.n52.jackson</groupId>
<artifactId>jackson-datatype-jts</artifactId>
<version>1.2.9</version>
</dependency>
Create the below Bean with @Configuration annnotation
import org.n52.jackson.datatype.jts.JtsModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
@Bean
public JtsModule jtsModule() {
return new JtsModule();
}
}
And in your @Entity class, make sure
import org.n52.jackson.datatype.jts.GeometryDeserializer;
import org.n52.jackson.datatype.jts.GeometrySerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.locationtech.jts.geom.Point;
@Column(name="the_geom", columnDefinition = "POINT")
@JsonSerialize(using = GeometrySerializer.class)
@JsonDeserialize(contentUsing = GeometryDeserializer.class)
private Point point;
After these changes, my Rest API returns data in the expected format
"point": {
"type": "Point",
"coordinates": [
53.85151,
-1.55973
]
}