2016-03-18 13 views
-1

Geriye kalan api uygulamak için Spring Boot kullanıyorum. Üç varlık SeqTb, PairTb ve GroupTb vardır ve yuvalanmıştır. SeqTb, PairTb ile birçok veriye sahiptir. PairTb, SeqTb ile onetomany ilişkisine sahiptir ve ayrıca GroupTb ile çoktur. analysisId ile benim denetleyicisi GET isteğinde Kalan varlık nesnesindeki varlık nesnesini filtreden geçirme api

//SeqTb.java 
@Entity 
@Table(name="SEQ_TB") 
public class SeqTb implements Serializable { 
....... 
    @ManyToOne 
    @JoinColumn(name="PAIR_ID") 
    private PairTb pairTb; 
...... 
} 

// PairTb.java 
@Entity 
@Table(name="PAIR_TB") 
@NamedQuery(name="PairTb.findAll", query="SELECT p FROM PairTb p") 
public class PairTb implements Serializable { 
    @ManyToOne 
    @JoinColumn(name="GROUP_ID") 
    private GroupTb groupTb; 

    @OneToMany(mappedBy="pairTb", cascade=CascadeType.ALL) 
    private List<SeqTb> seqTbs; 
} 

//GroupId.java 
@Entity 
@Table(name="GROUP_TB") 
public class GroupTb implements Serializable { 
    //bi-directional many-to-one association to PairTb 
    @OneToMany(mappedBy="groupTb", cascade=CascadeType.ALL) 
    private List<PairTb> pairTbs; 
} 

aşağıdaki şekilde ele alındığı:

@RequestMapping( 
     value = "/api/seqs/{analysis_id}", 
     method = RequestMethod.GET, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<SeqTb> getSeqByAnalysisId(@PathVariable("analysis_id") String analysis_id) { 
    SeqTb seq = seqService.findByAnalysisId(analysis_id); 
    return new ResponseEntity(seq, HttpStatus.OK); 
} 

Ben de sırayla aşağıdaki JPA deposundan gelen yöntemlerini çağırır arayüzünü SeqService uzanan bir fasulye sınıf SeqServiceBean oluşturmak sorgu için. Ben SeqTb.PairTb ile SeqTb nesnesi sorguladığınızda

//SeqRepository.java 
@Repository 
public interface SeqRepository extends JpaRepository<SeqTb, Integer> { 
    @Override 
    public List<SeqTb> findAll(); 
    public List<SeqTb> findByAnalysisId(String analysisId); 
} 

== null, api gayet güzel çalışıyor. Bununla birlikte, URL'ye koyduğum analiz, sırayla bir groupId'ye ait olan bir doubleId ile ilişkilendirilen bir SeqTb kaydına aitse, program delirecektir. Aşağıda çıktı, ilk bölüm çıktı doğrudur (kalın metin). Bundan sonra, DoubleTb ve GroupTb'yi döngüler halinde basmaya devam eder (pairTb, groupTb anahtar kelimelerini tekrarlayarak).

{ "rowID": 8, "analysisId": "cce8d2c2-a6dc-4ee9-ba97-768f058abb50", "analyteCode": "D", "orta", "ucsc", "pairTb": {"rowId": 4, "pairCode": "01ad975d-c2ed-4e4d-bd3b-c9512fc9073c", "groupTb": {"rowId": 1, "groupName": "PAWG_pilot-50", " pairTbs ": [{" rowID ": 1," çift kod ":" 00ad0ffe-2105-4829-a495-1c2aceb5bb31 ", " groupTb ": {" rowId ": 1," groupName ":" PAWG_pilot-50 " , "pairTbs":

Bu arada Ben bir varlık içindeki iç içe varlık nesnesi göz ardı edip sadece anlam sütunları nasıl alabilirim

Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response 
    at org.apache.catalina.connector.Response.getWriter(Response.java:565) ~[tomcat-embed-core-8.0.32.jar:8.0.32] 
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212) ~[tomcat-embed-core-8.0.32.jar:8.0.32] 

: tomcat sunucudan hataların sürü var?

cevap

1

Ayrıca, bu alanı vermemek için bir özelliği @JsonIgnore ile de ekleyebilirsiniz.

0

Çözüm bulundu. Yalnızca belirli sütunları varlıktan içeren ve iç içe geçmiş varlık nesnesini dışarıda bırakan bir değer nesnesi oluşturuldu. Ve çalışıyor.