我正在开发一个可以在MySql和MS SQL上运行的应用程序。
我有一个"几何"为空间类型。
使用:
@Column(columnDefinition = "geometry")
private Point geometry;
(指向org.springframework.data.geo.Point)
Hibernate正确创建字段(hbm2ddl)。
但是插入任何一点都行不通。 我得到:数据截断:无法从发送到GEOMETRY字段的数据中获取几何对象
我使用spring-boot-jpa-starter ..而不是直接休眠。
<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.2.2.Final</version>
</dependency>
此致 IDO
答案 0 :(得分:8)
您好我已成功映射JPA中的一个点。这是我做的:
我在Maven上有这个:
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.2.5.Final</version>
</dependency>
我在我的实体上有这个:
@Column(name = "locationpoint", columnDefinition = "POINT")
private Point locationpoint;
我在我的application.properties上有这个:
# needed for Location domain class
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
我可以使用它来获取值:
locationRepository.findOne((long) 1).getLocationpoint().getX();
locationRepository.findOne((long) 1).getLocationpoint().getY();
我的解决方案来自Matti Tahvonen的例子:
https://github.com/mstahv/spring-boot-spatial-example
希望这有帮助。