जो मेरे पास है:
@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
}
क्या समस्या है:
समस्या यह है कि मैं सत्र बंद होने के बाद आलसी संग्रह को नहीं खींच सकता। लेकिन मैं आगे बढ़ने की विधि में सत्र बंद नहीं कर सकता ।
क्या समाधान (मोटे समाधान):
a) सत्र बंद होने से पहले, आलसी कलेक्ट्स को खींचने के लिए हाइबरनेट करें
entity.getAddresses().size();
entity.getPersons().size();
....
b) शायद अधिक अभियोगात्मक तरीका @Fetch(FetchMode.SUBSELECT)
एनोटेशन का उपयोग करना है
सवाल:
इसे करने के लिए एक सर्वोत्तम अभ्यास / सामान्य तरीका / अधिक उपयुक्त तरीका क्या है? मतलब मेरी वस्तु को JSON में बदल देता है।