Я создал отношения OneToMany следующим образом:
@Entity
//@JsonDeserialize(as = User.class)
public class Role implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "roleName", unique = true, nullable = false)
private String roleName;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "role", fetch = FetchType.LAZY)
@JsonManagedReference
private Set<User> users = new HashSet<User>();
}
@Entity
public class User implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "username", unique = true, nullable = false)
private String username;
@Column(name = "email", unique = true, nullable = false)
private String email;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "firstName", nullable = false)
private String firstName;
@Column(name = "lastName", nullable = false)
private String lastName;
@ManyToOne
@JoinColumn(name = "fk_role")
@JsonBackReference
private Role role;
}
и когда я пытаюсь добавить нового пользователя в формате JSON методом post:
{
"username": "XXXX",
"email": "XXXX@gmail.com",
"password": "XXXX",
"firstName": "XXXX",
"lastName": "XXXX",
"role": 1
}
я получаю эту ошибку:
{
"timestamp": "2018-05-09T19:35:55.057+0000",
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: Cannot construct instance of `org.vi.entities.Role` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (1); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.vi.entities.Role` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (1) at [Source: (PushbackInputStream); line: 7, column: 9] (through reference chain: org.vi.entities.User["role"])",
"path": "/users"
}
Я уже пытаюсь добавить @JsonDeserialize(as = User.class)
в Role Class, но это дает мне еще одну ошибку с Content type 'application/json;charset=UTF-8' not supported
, даже если Content-Type уже существует в заголовке.
пожалуйста, не могли бы вы помочь мне с этим?
PS: У меня такие же отношения между двумя другими классами (Category & Product) в одном проекте, и он работает отлично, ведьма странная.