Java 在本机Hibernate中设置FetchMode
我需要在我的hibernate映射上设置fetch模式,在某些情况下是急切的,在另一些情况下是懒惰的。我的默认设置(通过hbm文件设置)为lazy=“true”。如何在代码中重写此设置?MyClass有一个定义为MyClass2类型的集合,我想将其FetchMode设置为Earner 目前,我有一些类似于:Java 在本机Hibernate中设置FetchMode,java,hibernate,Java,Hibernate,我需要在我的hibernate映射上设置fetch模式,在某些情况下是急切的,在另一些情况下是懒惰的。我的默认设置(通过hbm文件设置)为lazy=“true”。如何在代码中重写此设置?MyClass有一个定义为MyClass2类型的集合,我想将其FetchMode设置为Earner 目前,我有一些类似于: Session s = HibernateUtil.getSessionFactory().openSession(); MyClass c = (MyClass)session.get(M
Session s = HibernateUtil.getSessionFactory().openSession();
MyClass c = (MyClass)session.get(MyClass.class, myClassID);
你可以试试这样的东西:(我头顶上的代码)
我认为应该使用FetchMode.JOIN或FetchMode.SELECT而不是FetchMode.EAGER。在
Hibernate
主类中有一个静态initialize(Object)
方法。您可以使用它强制加载您的收藏:
MyClass c = (MyClass)session.get(MyClass.class, myClassID);
Hibernate.initialize(c.getMySetOfMyClass2());
然而,延迟抓取的默认值就是:默认值。您可能希望覆盖特定集合映射中的惰性。如果您不使用条件,还有
JOIN-FETCH
关键字,它将急切地加载JOIN指定的关联
session.createQuery("select p from Parent p join fetch p.children c")
session.createQuery("select p from Parent p join fetch p.children c")