2017-01-02 6 views
0

공간 데이터를 사용하는 프로젝트에 Spring Boot를 사용하고 있습니다. 공간 데이터에 대해 저는 Hibernate Spatial을 사용하고 있습니다.Spring Java JPA : 최대 절전 모드에서 사양 사용

@Column(name="LOCATION",columnDefinition="geometry(Point,4326)") 
private Point location; 

Point 클래스 com.vividsolutions.jts.geom.Point이다 : 이것은 내 엔터티의 구성입니다. 여기에는 getter와 setter도 포함됩니다.

이 엔티티를 보통 repository.findOne("id")과 함께 검색 할 때 내 결과의 위치도 포인트에 매핑됩니다. 그러나 나중에 시스템에서 동적 쿼리 시스템이 필요합니다. 그래서 따라서 org.springframework.data.jpa.domain.Specification에서 상속 한 클래스를 사용하여 데이터를 쿼리합니다. 이 사양을 사용할 때 위치는 항상 null입니다. SQL 디버그 정보는 위치가 데이터베이스에서 검색되었음을 보여 주지만 어떤 이유로 엔티티 개체에 매핑되지 않습니다.

스프링 부트 버전은 1.4.0.RELEASE입니다. 데이터는 mysql 데이터베이스에서 가져옵니다.

Specification을 사용하여 지오메트리 데이터를 검색하는 데 도움을 주실 수 있습니다.

답변

0

필자는 Mysql Spatial과 동일하게 테스트하고 사양을 사용하여 쿼리를 적용하여 데이터를 검색했습니다. 공간 데이터를 검색 할 수 있습니다.

다음은 시도 할 수있는 몇 가지 포인터입니다.

  1. 공간 쿼리 및 유형을 지원하는 dialect를 설정했는지 확인하십시오.

    spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect

  2. 열 정의를 정의 할 필요가 없습니다.

+0

columnDefinition="geometry(Point,4326)이 답변에 감사드립니다 제거합니다. 불행히도 이것은 도움이되지 않습니다. 나는 문제가 org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor 내에 있다고 생각한다. 생성 된 모델 내에서 모든 지오메트리 유형에 대한 속성이 표시되지 않습니다. 내 플러그인 정의에서 뭔가를 잊었나요? 나는 Maven을 사용하고있다. – Cerebres

+0

포인트를 지오메트리로 변경하면 메타 모델에 추가되지만 값은 null로 유지됩니다. – Cerebres

+0

@Cerebres 사용중인 봄 부팅 및 최대 절전 모드의 버전입니다. 스프링 부트 2.0.0 스냅 샷으로 테스트하고 최대 절전 모드로 5.2.5 –