herausfiltern Ich benutze Spring Boot, um Rest API zu implementieren. Es gibt drei Entitäten SeqTb
, PairTb
und GroupTb
und sie sind verschachtelt. SeqTb
hat viele mit PairTb
. PairTb
hat onetomany Beziehung mit SeqTb
und auch viele mit GroupTb
.wie man Entitätsobjekt in Entität in Ruhe 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;
}
In meinem Controller mit analysisId GET-Anfrage wurde auf folgende Weise behandelt:
@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);
}
Ich schaffe auch eine Bean-Klasse SeqServiceBean
, die die Schnittstelle SeqService
die wiederum ruft Methoden aus der folgenden JPA-Repository erweitert für die Abfrage.
//SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {
@Override
public List<SeqTb> findAll();
public List<SeqTb> findByAnalysisId(String analysisId);
}
Wenn ich ein SeqTb Objekt mit SeqTb.PairTb Abfrage == null, arbeitet die api gut. Wenn die AnalyseId, die ich in die URL einfüge, zu einem SeqTb
Datensatz gehört, der mit einer pairId verknüpft ist, die wiederum zu einer groupId gehört, würde das Programm verrückt werden. Unten ist die Ausgabe, die Ausgabe des ersten Teils ist korrekt (fett gedruckter Text). Danach druckt es weiterhin PairTb und GroupTb in Schleifen (wiederholte Schlüsselwörter pairTb
, groupTb
).
{ "rowid": 8 "analysisId": "cce8d2c2-a6dc-4ee9-ba97-768f058abb50", "analyteCode": "D", "Mitte": "UCSC", "pairTb": { "rowid": 4, "pairCode": "01ad975d-c2ed-4e4d-bd3b-c9512fc9073c", "groupTb": { "rowid": 1 "Gruppenname": "PAWG_pilot-50", " pairTbs ": [{" rowId ": 1," pairCode ":" 00ad0ffe-2105-4829-a495-1c2aceb5bb31 ", " groupTb ": {" rowId ": 1," groupName ":" PAWG_pilot-50 " , "pairTbs":
Inzwischen ich haben viele Fehler von Tomcatbediener:
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]
Wie kann ich die verschachtelte Einheit Objekt innerhalb eines Unternehmens zu ignorieren und nur die Bedeutung Spalten bekommen?