Was ich habe:
@Entity
public class MyEntity {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@JoinColumn(name = "myentiy_id")
private List<Address> addreses;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@JoinColumn(name = "myentiy_id")
private List<Person> persons;
//....
}
public void handle() {
Session session = createNewSession();
MyEntity entity = (MyEntity) session.get(MyEntity.class, entityId);
proceed(session); // FLUSH, COMMIT, CLOSE session!
Utils.objectToJson(entity); //TROUBLES, because it can't convert to json lazy collections
}
Was für ein Problem:
Das Problem ist, dass ich nach Abschluss der Sitzung keine Lazy Collection mehr abrufen kann. Ich kann aber auch eine Sitzung in der Methode " Fortfahren" nicht schließen .
Was für eine Lösung (grobe Lösung):
a) Erzwingen Sie vor dem Schließen der Sitzung den Ruhezustand, um verzögerte Sammlungen abzurufen
entity.getAddresses().size();
entity.getPersons().size();
....
b) Vielleicht ist es elleganter, @Fetch(FetchMode.SUBSELECT)
Anmerkungen zu verwenden
Frage:
Was ist eine bewährte Methode / ein allgemeiner Weg / ein elleganterer Weg, dies zu tun? Bedeutet, mein Objekt in JSON zu konvertieren.