Я хочу преобразовать два объекта с одинаковыми атрибутами, используя средство сопоставления моделей. Как бы то ни было, я не могу из-за отношений «многие ко многим».
private User fromEntity(UserEntity userEntity) {
LOGGER.info("Converting userEntity to user model with Id" +
userEntity.getUserId());
User user = modelMapper.map(userEntity,User.class);
LOGGER.info("Converted userEntity to user model with Id" +
userEntity.getUserId());
return user;
}
У меня есть классы User и UserEntity. Они сопоставлены с классами Role и RoleEntity:
Вот мой пользовательский класс:
public class User {
private Long userId;
private String userUsername;
private String userName;
private String userSurname;
private String password;
private String addres;
private String eMail;
private boolean active = false;
private String key;
//@JsonBackReference
private Set<Role> role ;
public User(){
role = new HashSet<>();
}
Класс роли:
public class Role {
private Long roleId;
private String role;
private Set<User> user;
public Role(){
user = new HashSet<>();
}
//@JsonManagedReference
public Set<User> getUser() {
return user;
}
}
Класс UserEntity:
@Entity
@Table( name="users" )
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "userId")
private Long userId;
private String userUsername;
private String userName;
private String userSurname;
private String password;
private String addres;
private String eMail;
private boolean active;
private String key;
@JsonManagedReference
@ManyToMany( cascade = CascadeType.ALL, fetch = FetchType.EAGER )
@JoinTable(
name = "users_roles",
joinColumns = {@JoinColumn(name="userId")},
inverseJoinColumns = {@JoinColumn(name="roleId")}
)
private Set<RoleEntity> roleEntities;
public UserEntity(){
active=false;
roleEntities = new HashSet<>();
}
и класс RoleEntity:
@Entity
@Table(name="roles")
public class RoleEntity {
@Id
@GeneratedValue
private Long roleId;
private String role;
@ManyToMany //( mappedBy = "roleEntities") //Bunu kaldırdım
private Set<UserEntity> userEntities ;
public RoleEntity(){
userEntities = new HashSet<>();
}
Это дает мне ошибку, когда я правильно вхожу в систему:
Ошибки сопоставления ModelMapper: 1) Преобразователь org.modelmapper.internal.converter.CollectionConverter@735060fc не смог преобразовать java.util.Set в java.util.Set. 1 ошибка