相关疑难解决方法(0)

Hibernate:拉动所有懒惰集合的最佳实践

是)我有的:

@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
}
Run Code Online (Sandbox Code Playgroud)

真是个问题:

问题是我不能在会话关闭后拉懒惰集合.但我也不能在proceed方法中关闭会话.

什么解决方案(粗解决方案):

a)在会话关闭之前,强制hibernate拉取惰性集合

entity.getAddresses().size();
entity.getPersons().size();
Run Code Online (Sandbox Code Playgroud)

....

b)使用@Fetch(FetchMode.SUBSELECT) …

java hibernate lazy-loading

77
推荐指数
5
解决办法
11万
查看次数

标签 统计

hibernate ×1

java ×1

lazy-loading ×1