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?