2016-03-22 17 views
6

Tôi có cơ sở dữ liệu MySQL và tôi muốn lấy một số dữ liệu dưới dạng json.truy xuất dữ liệu từ cơ sở dữ liệu dưới dạng json trong khởi động mùa xuân

Và tôi có một thực thể Offre có quan hệ @OneToMany liên quan với pháp nhân AssociationCandidatOffre.

và tôi có một api mà Calles phương pháp này trong kho lưu trữ của tôi:

offreRepository.findAll(); 

offre thực thể:

@Entity 
public class Offre implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "CODE_OFFRE") 
    private Long codeOffre; 
    private String titre; 

    @OneToMany(mappedBy = "offre") 
    private Collection<AssociationCandidatOffre> associationCandidatOffres; 

    public Collection<AssociationCandidatOffre> getAssociationCandidatOffres() { 
     return associationCandidatOffres; 
    } 

    public void setAssociationCandidatOffres(Collection<AssociationCandidatOffre> associationCandidatOffres) { 
     this.associationCandidatOffres = associationCandidatOffres; 


    } 
    //... getters/setters  
    } 

thực thể AssociationCandidatOffre:

@Entity 
public class AssociationCandidatOffre implements Serializable { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long idAssociation; 
    private String lettreMotivation; 
    private String tarifJournalier; 
    private Date dateDisponibilite; 

    @ManyToOne 
    private Candidat candidat; 

    @ManyToOne 
    private Offre offre; 
    @JsonIgnore 
    @XmlTransient 
    public Candidat getCandidat() { 
     return candidat; 
    } 
    @JsonSetter 
    public void setCandidat(Candidat candidat) { 
     this.candidat = candidat; 
    } 
    @JsonIgnore 
    @XmlTransient 
    public Offre getOffre() { 
     return offre; 
    } 
    @JsonSetter 
    public void setOffre(Offre offre) { 
     this.offre = offre; 
    } 

    //... getters/setters 
} 

vấn đề là khi tôi gọi các api /offres để trả lại cho tôi một đối tượng json tôi nhận được thông báo lỗi này inste quảng cáo:

Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: could not extract ResultSet (through reference chain: java.util.ArrayList[0]->com.***.Rekrute.entities.Offre["associationCandidatOffres"]); 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: could not extract ResultSet (through reference chain: java.util.ArrayList[0]->com.***.Rekrute.entities.Offre["associationCandidatOffres"]) 

khi tôi sử dụng @JsonIgnore trong getAssocationCandidatOffres Tôi không nhận được bất kỳ lỗi nhưng tôi muốn rằng hiệp hội trong kết quả json là tốt.

Thông thường, điều này sẽ không tạo ra bất kỳ lỗi nào vì tôi có @JsonIgnore ở phía bên kia của mối quan hệ là getOffre().

làm cách nào tôi có thể giải quyết vấn đề này?

+0

Bạn có chắc chắn danh sách 'getAssocationCandidatOffres' được điền không? Hãy nhớ rằng các IDE trong chế độ gỡ lỗi thường sẽ chạy một truy vấn để có được bất kỳ danh sách tải chậm nào trong nền khi bạn mở rộng danh sách. – dambros

Trả lời

2

Bạn không thể chuyển đổi một mối quan hệ hai chiều của một enitity thành JSON. Bạn nhận được một vòng lặp vô tận.

Trình phân tích cú pháp JSON bắt đầu bằng thực thể Cung cấp và đọc số liên kết AssociationCandidatOffre qua getAssociationCandidatOffres(). Đối với mỗi AssociationCandidatOffre Trình phân tích cú pháp JSON đọc getOffre() và bắt đầu lại. Trình phân tích cú pháp không biết khi nào anh ta phải kết thúc.

Các vấn đề liên quan