2017-10-06 1 views
0

모든 관계와 subrelations을 제공합니다결과 내가 내 API의 봄 부팅</p> <p>클래스 컨트롤러 방법을하고 있어요</p> <p><a href="https://i.stack.imgur.com/gs1vc.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gs1vc.jpg" alt="enter image description here"></a></p> <p>목록 화면을 가지고있는 내가하는 응용 프로그램이

@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> { 

} 

클래스 엔티티는

이이

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 메서드의 반환이 제공되는 프론트 엔드의 내 JS에서

@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.... 
    } 

내가 가지고있는 모든 과도한 지체를 초래하는 관계, 그리고 그 하위 관계, 나는 단지 에스트로의 이름, Municipio의 이름과 Eentidade의 이름.

이상한 점은 배열의 두 번째 목록의 결과가 하위 관계없이 필요한 정보를 정확히 제공한다는 것입니다.

사진을보세요.

enter image description here

+0

게으른 관계로 시도하십시오. –

+0

수행 방법? –

+0

@EduardoKrakhecke'@ManyToOne (optional = false, fetch = FetchType.LAZY)' – Barath

답변

0

오류는 municipio, entidade 예와 University of Florida의를 위해 내가 @OneToMany 매핑을 가지고 불필요한이었다 더 이러한 클래스 @OneToMany 매핑 내, 내 관련 클래스에 있었다. 따라서 distritos에서 GET을 수행 할 때 불필요한 양방향 파일을 포함하여 모든 매핑에 대한 응답이 있었기 때문에 속도가 느려졌습니다.

관련 문제