У меня есть Location
сущность, которая имеет свойство типа org.springframework.data.elasticsearch.core.geo.GeoPoint
в Spring boot и spring-data-elasticsearch project, как показано ниже:
@Entity
@Table(name = "location")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "location")
public class Location implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Column(name = "name", nullable = false)
private String name;
@NotNull
@Column(name = "country", nullable = false)
private String country;
@GeoPointField
private GeoPoint location;
...
Но hibernate бросаетCaused by: org.hibernate.MappingException: Could not determine type for: org.springframework.data.elasticsearch.core.geo.GeoPoint
, когда я запускаю приложение. Есть способ обойти это?
Я использовал
String
представление координат в виде"12.14, 34.53"
(подробнее здесь ) с@GeoPointField
аннотацией, и это сработало.Вы можете иметь свой собственный класс местоположения с двумя полями и использовать его
и в вашем классе документов вы можете использовать вот так