Я работаю над проектом gis с весенней загрузкой 2.1, гибернацией и mysql 8.
у меня есть таблица с этой деталью
@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Place {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long Id;
@Column(nullable = false, columnDefinition = "point")
Point point;
String tittle;
String text;
@Column(name = "created_date", nullable = false, updatable = false)
@CreatedDate
@JsonIgnore
private long createdDate;
@Column(name = "modified_date")
@LastModifiedDate
@JsonIgnore
private long modifiedDate;
@org.springframework.data.annotation.CreatedBy
@JsonIgnore
Long CreatedBy;
@LastModifiedBy
@JsonIgnore
Long ModifiedBy;
@ManyToOne(fetch=FetchType.LAZY,optional = false)
@JoinColumn(name = "city_id",nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
private City city;
}
Я хочу добавить индекс для точки, но mysql предупреждает меня, что:
Пространственный индекс столбца «точка» не будет использоваться оптимизатором запросов, поскольку столбец не имеет атрибута SRID. Рассмотрите возможность добавления в столбец атрибута SRID.
как добавить атрибут srid к точке с аннотацией и как добавить пространственный индекс к точке с аннотацией.






Попробуйте с определение столбца. Протестировано с Hibernate 5.4.2 и MySQL 8.0.
@Entity
public class GeometryEntity {
@Id
@GeneratedValue
private Long id;
// only allow geometries with SRID 4326 and not null (be able to create spatial indexes)
@Column(nullable = false, columnDefinition = "GEOMETRY SRID 4326")
private Geometry geometry;
private void setId(final Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setGeometry(final Geometry geometry) {
this.geometry = geometry;
}
public Geometry getGeometry() {
return geometry;
}
}
Смотрите также: https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html