Есть сущность
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.bedatadriven.jackson.datatype.jts.serialization.GeometryDeserializer;
import com.bedatadriven.jackson.datatype.jts.serialization.GeometrySerializer;
//....
@Entity
@Data
public class ParkingPlace {
//....
@NotNull
@Column(columnDefinition = "Geometry")
@JsonSerialize(using = GeometrySerializer.class)
@JsonDeserialize(using = GeometryDeserializer.class)
private com.vividsolutions.jts.geom.Point coordinate;
//....
public ParkingPlace() {
}
}
Использую spring boot.
Есть REST контроллер, который пока только выдает элемент сущности из базы и по идее должен в неё записать новую.
@PostMapping
public ParkingPlace post(ParkingPlace place){
return service.savePlace(place);
}
Не пойму как мне правильно отправть POST запрос (а точнее составить тело запроса, чтобы этот запрос десериализовался в сущность с полем coordinate).
Когда послыаю запрос без поля coordinate, то запрос обрабатывается и создается объект (но соответственно поле coordinate = null).
При попытке хоть как то задать координаты в эту сущность сервер пишет ошибку
Field error in object 'parkingPlace' on field 'coordinate': rejected value [coordinates:POINT(623.1214, 12.623462346)]; codes [typeMismatch.parkingPlace.coordinate,typeMismatch.coordinate,typeMismatch.com.vividsolutions.jts.geom.Point,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [parkingPlace.coordinate,coordinate]; arguments []; default message [coordinate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'com.vividsolutions.jts.geom.Point' for property 'coordinate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.vividsolutions.jts.geom.Point' for property 'coordinate': no matching editors or conversion strategy found]]
Пробовал писать запрос по разному, никак не получается.
GET запрос выдает такую сущность
{
"id": 1,
"coordinate": {
"type": "Point",
"coordinates": [
4.124,
112.1213
]
},
"isFree": false,
"area": {
"id": 27,
"name": " Wall Streat",
"freeSpaceCount": 2
}
}
Как мне правильно написать тело POST запроса для моего случая?
В данном случае всё зависит от GeometryDeserializer.class, если он настроен так, чтобы десериализовать объект сериализованный GeometrySerializer.class, то в теле POST достаточно будет передать:
{
"coordinate": {
"type": "Point",
"coordinates": [
4.124,
112.1213
]
}
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть класс Person с параметрами: name, age, email, а также getter и setterПосле чего я создал класс PersonStorage - который имеет два метода: