繁体   English   中英

方法GET的结果带来所有关系和子关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM