Ich habe zwei Einheiten, eine Entität "Film" und eine Entität "Clip" jeder Clip gehört zu einem Film und ein Film kann mehrere Clips haben.Hibernate @ OneToMany Beziehung verursacht unendliche Schleife oder leere Einträge in JSON Ergebnis
Mein Code sieht so aus:
Movie.java
@OneToMany(mappedBy = "movie", targetEntity = Clip.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Clip> clips = new HashSet<Clip>();
Clip.java
@ManyToOne
@JoinColumn(name="movie_id")
private Movie movie;
Die Tabellen erzeugt werden, und jeder Clip hat eine Spalte „movie_id“, aber dies führt zu meiner Anwendung in einer Endlos-Schleife zu beenden, wenn ich Daten anfordert bin
@Path("/{id:[0-9][0-9]*}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Movie lookupMovieById(@PathParam("id") long id) {
return em.find(Movie.class, id);
}
result:
{"id":1,"version":1,"name":"MGS Walkthrough","filename":"video.mp4","movieCategories":[{"id":1,"version":1,"name":"Walkthrough"}],"clips":[{"id":1,"version":1,"name":"MGS Walkthrough P1","keywords":null,"movie":{"id":1,"version":1,"name":"MGS Walkthrough","filename":"video.mp4","movieCategories":[{"id":1,"version":1,"name":"Walkthrough"}],"clips":[{"id":1,"version":1,"name":"MGS Walkthrough P1","keywords":null,"movie":{"id":1,"version":1,"name":"MGS Walkthrough","filename":"video.mp4","movieCategories":[{"id":1,"version":1,"name":"Walkthrough"}],"clips":[{"id":1,"version":1,"name":"M...
Es ist das gleiche Ergebnis, wenn ich einen Clip anfordere.
Wenn ich es in eine @ ManyToMany-Beziehung ändere, wird es keine Probleme geben, aber das ist nicht, was ich hier brauche. Kannst du mir helfen? Das Setzen von fetchType auf Lazy hat nicht funktioniert.
Edit: Ich bin mit dem aktuellen Entwicklung Studio JBoss
Edit:
I "gelöst" dies durch diesen Artikel lesen:
http://blog.jonasbandi.net/2009/02/help-needed-mapping-bidirectional-list.html
„eine bidirektionale Zur Karte Eins zu viele, mit der Eins-zu-Vielen-Seite als Eigentümerseite müssen Sie das mappedBy-Element entfernen und die Viele-zu-Eins @JoinColumn als einfügbar und aktualisierbar auf false setzen Diese Lösung ist offensichtlich nicht optimiert und erzeugt etwas hinzufügen itionale UPDATE-Anweisungen. "
, wenn ich bitte einen Film, den ich die folgende Antwort erhalten:
{ "id": 1 "Version": 1, "name": "MGS Lösungsweg", "Dateiname": "video.mp4" , "movieCategories": [{"id": 1, "version": 1, "name": "Walkthrough"}], "clips": [], "description": "Trailer zu mgs4"}
Der Eintrag "Clips" erscheint weiterhin. Ist das immer noch die falsche Lösung oder muss ich damit leben?
Ihr Update hat mir wirklich geholfen – elysch
Das Entfernen der Getter löste mein Problem. Vielen Dank! –
Ihr Update hat meinen Tag gerettet! – SuperGirl