1. 네이티브 쿼리 안쓰고 mariaDB 에 Point 타입 값 저장하려고 별 짓 다해봤는데 계속 실패 - Cannot get geometry object from data you send to the GEOMETRY field.'
2. https://raul8804.wordpress.com/2018/04/25/integrate-geometry-with-mysql-and-spring-jpa/ https://stackoverflow.com/questions/45713934/jackson-deserialize-geojson-point-in-spring-boot/47952637 등을 참고하여 jtsModule, GeometryDeserializer 등까지도 시도해봤는데 역시나 실패.
3. Hibernate 문서 다시 보다보니 com.vividsolutions jts 라이브러리 아닌 org.locationtech.jts 사용하고 있는게 보여서 라이브러리 변경했더니 별다른 애노테이션이나 기타 추가 코드 없이 잘 됨. https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#spatial-types
4. 검색해보면 나오는 대부분의 문서는 com.vividsolutions 사용하고 있으니 혹 도전해보실 분들은 우선 이것부터 해보는게 좋을 듯 싶네요 ( org.locationtech.jts 로 save 만 성공했지 아직 다른 것들은 저도 확인해보지 못해서 )
// pom.xml
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.16.1</version>
</dependency>
// Util
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
public class GeomUtil {
public static GeomUtil geomUtil = new GeomUtil();
public static Point createPoint(double lat, double lon) {
GeometryFactory gf = new GeometryFactory();
return gf.createPoint(new Coordinate(lat, lon));
}
}
// Entity
@Entity
@Data
@Table(name = "gis_point")
public class GisPoint implements Serializable
...
private double posLat;
private double posLon;
private Point machPt;
}
// save Point type
@Autowired
private GisPointRepository gisPointRepository;
void saveGisPoint(GisPoint gisPoint) {
Point pt = GeomUtil.createPoint(gisPoint.getPosLat(), gisPoint.getPosLon());
gisPoint.setMachPt(pt);
gisPointRepository.save(gisPoint);
}
'Slack 채널 정리' 카테고리의 다른 글
CNCF (Cloud Native Computing Foundation) (0) | 2019.11.27 |
---|---|
mariaDB - null 아닌 최종값을 한 줄로 표시 (0) | 2019.11.27 |
회사 애자일 멘토 롤아웃에 대한 단상 (0) | 2019.11.27 |
제목 붙이기 애매한 자바 코딩 얘기 (0) | 2019.11.27 |
python turtle 로 하트 그리는 소스 (0) | 2019.11.27 |