[英]Result of the method GET brings all relations and subrelations
我有一个有列表屏幕的应用程序
我在API Spring Boot中正在执行一种方法
类控制器
@RequestMapping(method = RequestMethod.GET, value = "/distritos", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<Distritos>> buscarTodosDistritos() {
Collection<Distritos> distritosBuscados = distritosService.buscarTodos();
return new ResponseEntity<>(distritosBuscados, HttpStatus.OK);
}
班级服务
public Collection<Distritos> buscarTodos(){
return distritosRepository.findAll();
}
类库
@Repository
public interface DistritosRepository extends JpaRepository<Distritos, Integer> {
}
类实体
@Entity
@Table(name = "distritos", schema="glb")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Distritos.findAll", query = "SELECT d FROM Distritos d"),
@NamedQuery(name = "Distritos.findByIdDistrito", query = "SELECT d FROM Distritos d WHERE d.idDistrito = :idDistrito"),
@NamedQuery(name = "Distritos.findByNome", query = "SELECT d FROM Distritos d WHERE d.nome = :nome"),
@NamedQuery(name = "Distritos.findByCodigoDne", query = "SELECT d FROM Distritos d WHERE d.codigoDne = :codigoDne"),
@NamedQuery(name = "Distritos.findByFlagAtivo", query = "SELECT d FROM Distritos d WHERE d.flagAtivo = :flagAtivo")})
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "idDistrito", scope= Distritos.class)
public class Distritos implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_distrito")
private int idDistrito;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 70)
@Column(name = "nome")
private String nome;
@Size(max = 8)
@Column(name = "codigo_dne")
private String codigoDne;
@Column(name = "flag_ativo")
private Integer flagAtivo;
@JoinColumn(name="idEntidade")
@ManyToOne
private Entidades entidade;
@JoinColumn(name="idMunicipio")
@ManyToOne(optional = false)
private Municipios municipio;
@JoinColumn(name="idUf")
@ManyToOne(optional = false)
private Ufs uf;
public Distritos() {
}
gets and sets....
}
在前端的js中,我有这个
carregarDados = function() {
token = localStorage.getItem("userToken");
$http({
method : 'GET',
url : 'http://localhost:8080/user/distritos'
}).then(function(response) {
$scope.distritos = response.data;
}, function(response) {
console.log(response.data);
console.log(response.status);
});
};
问题在于,GET方法的返回带来了所有关系,从而导致了过多的延迟及其子关系,因为我只需要Estado的名称,Municipio的名称和Eentidade的名称。
奇怪的是,数组第二个列表的结果恰好带来了我所需的信息,而没有子关系。
看图片。
错误出在我的相关类中,例如在municipio,entidade和uf中,我有一个@OneToMany
映射,在这些类中有更多@OneToMany
映射是不必要的。 因此,当我在Distrito中执行GET
,我对所有映射(包括不必要的双向映射)都做出了响应,从而导致运行缓慢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.