Допустим, у меня есть форма на внешнем интерфейсе с обычными полями и выпадающими списками.В этих выпадающих меню пользователь может выбрать параметр , и каждый параметр связан с сущностью в данных Spring JPA;
раскрывающиеся списки содержатнекоторая метка и ссылка на соответствующую сущность как значение .Затем это значение передается в POST-запросе в PagingAndSorting репозиторий объекта, который мы хотим создать.
Допустим, это пользователь с именем пользователя, и он должен быть связанным с одним из офисов (также юридическим лицом):
@Data
@Builder
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name="users")
public class User{
@Id
@Coluemn(name="USER_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
@Column(name="USER_NAME", nullable=false)
private String userName;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="OFFICE_ID", **nullable=false**)
private Office office;
}
Моим первым предположением будет: Отправка POST -запроса на http://localhost:8080/api/users/ contentType: 'application / json'
{"userName":"Anton","office":"http://localhost:8080/api/offices/1"}
Но возникает исключение
{
"cause": {
"cause": null,
"message": "Cannot construct instance of `test.domain.Office` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('http://localhost:8080/api/offices/1')\n at [Source: (org.apache.catalina.connector.CoyoteInputStream); line: 1, column: 160] (through reference chain: test.domain.User[\"office\"])"
},
"message": "JSON parse error: Cannot construct instance of `test.domain.Office` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('http://localhost:8080/api/offices/1'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `test.domain.Office` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('http://localhost:8080/api/office/1')\n at [Source: (org.apache.catalina.connector.CoyoteInputStream); line: 1, column: 160] (through reference chain: test.domain.User[\"office\"])"
}
Что я делаю не так?