У меня проблема с созданием нового объекта с составным первичным ключом.В этом посте я прочитал Spring Data Rest @EmbeddedId не может быть построен из Post Request , что эту проблему можно решить с помощью BackendIdConverter.Во-первых, я не понимаю, как использовать этот класс и как он конвертирует URI в id.Кто-нибудь может дать мне пример, пожалуйста. Во-вторых, когда я пытаюсь написать класс, который расширяет BackendIdConverter, я получаю ошибку, что он не может быть разрешен для типа.Не могли бы вы помочь мне решить эту проблему
@Entity
@Table(name = "booking_routes")
The entity class
public class BookingRoute extends ResourceSupport implements Serializable, Comparable<BookingRoute> {
private static final long serialVersionUID = 1L;
@EmbeddedId
private BookingRouteId pk=new BookingRouteId();
@Column
private Integer rank;
@ManyToOne
@MapsId("bookingId")
@JoinColumn(name = "booking_id")
@JsonIgnore
private Booking booking;
@ManyToOne
@MapsId("locationId")
@JoinColumn(name = "location_id")
@JsonIgnore
private Location location;
public BookingRoute() {
}
public BookingRoute(Booking booking, Location location, Integer rank) {
this.pk = new BookingRouteId(booking.getBookingId(), location.getLocationId());
this.booking = booking;
this.location = location;
this.rank = rank;
booking.getBookingRoutes().add(this);
location.getBookings().add(this);
}
....
}
The embeddable id class
@Embeddable
public class BookingRouteId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "booking_id")
private Integer bookingId;
@Column(name = "location_id")
private Integer locationId;
public BookingRouteId() {
}
public BookingRouteId(Integer bookingId, Integer locationId) {
super();
this.bookingId = bookingId;
this.locationId = locationId;
....
}
here how I send the post method
{
"pk": {
"foreignKeyId": "http://localhost:8080/path/to/other/resource/1",
"foreignKeyId": "http://localhost:8080/path/to/other/resource/2",
"rank":1
}