私が持っているもの:
@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
}
どのような問題:
問題は、セッションが閉じられた後、レイジーコレクションをプルできないことです。しかし、proceedメソッドでセッションを閉じることもできません。
どのような解決策(粗い解決策):
a)セッションを閉じる前に、休止状態でレイジーコレクションをプルするように強制します
entity.getAddresses().size();
entity.getPersons().size();
...。
b)おそらくもっとエレガントな方法は@Fetch(FetchMode.SUBSELECT)注釈を使うことです
質問:
それを行うためのベストプラクティス/一般的な方法/よりエレガントな方法は何ですか?オブジェクトをJSONに変換する手段。