Ошибка синтаксического анализа JSON: невозможно создать экземпляр класса сущности - PullRequest
0 голосов
/ 10 мая 2018

Я создал отношения 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) в одном проекте, и он работает отлично, ведьма странная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...