(у этого вопроса есть версия на испанском sh: Pregunta español StackOverflow )
Здравствуйте,
Я создаю API-REST с помощью Springboot, Hibernate .. В одном контроллере, который я возвращаю одну сущность, смысл в том, что когда я делаю это:
Empresa company= empresaManager.findById(2L);
return company;
возвращает именно то, что я ожидаю (объектная компания имеет список студентов и имеет только 2 вайкулированных) .
Но когда я вместо числа использую число, я получаю студентов, а потом возвращаю компанию студентов, в компанию, в которую они меня возвращают, входят 12 студентов (по 6 раз каждый студент)
String token = request.getHeader("Authorization");
token = token.replace("Bearer ", "");
Usuario usuario = tokenManager.getUsuarioFromToken(token);
Long id = usuario.getEmpresa().getIdempresa();
Empresa empresaOriginal = empresaManager.findById(id);
return empresaOriginal;
Есть ли шанс, что вы знаете, почему это происходит?
Вот как должна вернуть объект компания:
И вот как я на самом деле получаю это:
Отсюда, вниз, это то, что спрашивается в комментариях
Это мой пользовательский объект:
@Entity
@Table(name = "usuario")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idusuario")
private Long idusuario;
@Column(name = "nombre", length = 30, nullable = false)
private String nombre;
@Column(name = "email", length = 80, nullable = false)
private String email;
@JsonIgnore
@Column(name = "contraseña", length = 300, nullable = false)
private String contraseña;
@JsonIgnore
@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "empresa_idempresa"), name = "empresa_idempresa")
private Empresa empresa;
@OneToMany(mappedBy = "usuario", orphanRemoval = true, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Fichaje> fichajes;
public Usuario() {
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
}
Это является моей компанией:
@Entity
@Table(name = "empresa")
public class Empresa {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idempresa")
private Long idempresa;
@Column(name = "nombre", length = 100, nullable = false)
private String nombre;
@Column(name = "contacto", length = 300, nullable = false)
private String contacto;
@Column(name = "fecha_inicio_practicas", columnDefinition = "DATE")
private LocalDate inicioPracticas;
@Column(name = "direccion", length = 100)
private String direccion;
@Column(name = "foto_empresa")
private String fotoEmpresa;
@OneToMany(mappedBy = "empresa", orphanRemoval = true, cascade = CascadeType.ALL)
private List<EmpresaTieneDia> empresaTieneDias;
@OneToMany(mappedBy = "empresa", orphanRemoval = false, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Usuario> estudiantes;
public Empresa() {
}
public Long getIdempresa() {
return idempresa;
}
public void setIdempresa(Long idempresa) {
this.idempresa = idempresa;
}
public List<Usuario> getEstudiantes() {
return estudiantes;
}
public void setEstudiantes(List<Usuario> estudiantes) {
this.estudiantes = estudiantes;
}
}
Это findById: (сервис или менеджер)
public Empresa findById(Long id) {
return this.empresaRepository.findByIdempresa(id);
}
(репозиторий или DAO)
public interface EmpresaRepository extends CrudRepository<Empresa, Long> {
Empresa findByIdempresa(Long id);
}