десериализация jackson v2
Спасибо за комментарии Roman C и Nowhere Man, постараюсь изложить свою проблему согласно вашим советам:
В моем проекте, есть 2 сущности:
@Entity
@Table(name = "users")
public class User implements UserDetails {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
@JsonManagedReference
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles;
public User() {
}
// геттеры/сеттеры + переопределенные методы UserDetails
}
А так-же сущность:
@Entity
@Table(name = "roles")
public class Role implements GrantedAuthority {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Enumerated(EnumType.STRING)
@Column(name = "name_role")
private UserRole userRole;
@JsonBackReference
@ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER)
private Set<User> users;
public Role() {
}
// геттеры/сеттеры
@Override
public String getAuthority() {
return getUserRole();
}
Так-же в свойства класса Role входит поле UserRole типа Enum (Реализацию менять не хочу, пробую именно с enum)
public enum UserRole {
ROLE_USER,
ROLE_ADMIN;
}
Основная проблема заключается в десериализации JSON, при создание новой сущности User на стороне клиента, выбрасывет:
Failed to evaluate Jackson deserialization for type [[simple type, class com.example.demo.entity.User]
Возможно проблема в том что, JSON не содержит коллекции типа Set. Но разобраться самостоятельно, с данной проблемой не могу.
В List'e хранить роли не хочу, т.к. избегаю хранения дубликатов. Реализовать DTO тоже не планирую.