У меня есть класс User и Department, которые указывают на соответствующие таблицы в базе данных mysql (отношение «многие ко многим»). Я хочу создать собственный десериализатор для Список отделов в классе User.
мой POST Json выглядит так:
{
"userId": 1456,
"firstName": "Дэвид",
"второе имя": "",
"lastName": "Бекхэм",
"пол": "М",
"rollNo": "",
"семестр": 0,
"раздел": "",
"электронная почта": "david8@gmail.com",
"пароль": "d123avid",
«телефон»: «9844547852»,
«статус»: 0,
"userType": 1,
"userBio": "я преподаю статистику",
"profilePicture": ноль,
"доб": "1999-03-21",
"facultyType": 1,
"отделы": [109]
}
Определение класса My User выглядит следующим образом:
@Entity
@Table(name="user")
public class User {
@Id
@Column(name="user_id")
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private long userId;
@Column(name="first_name")
private String firstName;
@Column(name="middle_name")
private String middleName;
@Column(name="last_name")
private String lastName;
@Column(name="gender")
private char gender;
@Column(name="roll")
private String rollNo;
@Column(name="semester")
private byte semester;
@Column(name="section")
private char section;
@Column(name="email")
private String email;
@Column(name="password")
private String password;
@Column(name="phone")
private String phone;
@Column(name="status")
private byte status;
@Column(name="user_type")
private byte userType;
@Column(name="user_bio")
private String userBio;
@Column(name="profile_picture")
private String profilePicture;
@Column(name="dob")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate dob;
@Column(name="faculty_type")// 0 is for student, 1 for permanent and 2 for visiting
private byte facultyType;
//for join table
@ManyToMany(fetch=FetchType.EAGER,
cascade= {CascadeType.PERSIST, CascadeType.MERGE,CascadeType.DETACH, CascadeType.REFRESH})
@JoinTable(
name="user_department",
joinColumns=@JoinColumn(name="user_id"),
inverseJoinColumns=@JoinColumn(name="dept_id")
)
private List<Department> departments;
В настоящее время я получаю сообщение о том, что
Ошибка синтаксического анализа JSON: невозможно создать экземпляр com.maverick.project.entity.Department: нет конструктора int / Int-аргумента / метода фабрики для десериализации из числового значения (109); Вложенное исключение: com.fasterxml.jackson.databind.JsonMappingException: невозможно создать экземпляр com.maverick.project.entity.Department: нет конструктора int / Int-аргумента / фабричного метода для десериализации из числового значения (109)
Мое определение класса Департамента выглядит следующим образом:
@Entity
@Table(name="department")
public class Department {
@Id
@Column(name="dept_id")
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private int deptId;
@Column(name="dept_name")
private String deptName;
@ManyToMany(fetch=FetchType.EAGER,
cascade= {CascadeType.PERSIST, CascadeType.MERGE,CascadeType.DETACH, CascadeType.REFRESH})
@JoinTable(
name="user_department",
joinColumns=@JoinColumn(name="dept_id"),
inverseJoinColumns=@JoinColumn(name="user_id")
)
@JsonIgnore
private List<User> users;