java - 在 native Hibernate 中设置 FetchMode

标签 java hibernate

我需要将我的 hibernate 映射的获取模式设置为在某些情况下是急切的,而在其他情况下是惰性的。我的默认值(通过 hbm 文件设置)为 lazy="true"。如何在代码中覆盖此设置? MyClass 有一个类型为 MyClass2 的集合,我想将其 FetchMode 设置为 EAGER。

目前,我有类似的东西:

Session s = HibernateUtil.getSessionFactory().openSession();
MyClass c = (MyClass)session.get(MyClass.class, myClassID);

最佳答案

你可以尝试这样的事情:(代码脱离我的头脑)

Criteria crit = session.createCriteria(MyClass.class);
crit.add(Restrictions.eq("id", myClassId));
crit.setFetchMode("myProperty", FetchMode.EAGER);
MyClass myThingy = (MyClass)crit.uniqueResult();

不过,我认为应该使用 FetchMode.JOIN 或 FetchMode.SELECT 而不是 FetchMode.EAGER。

关于java - 在 native Hibernate 中设置 FetchMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/243409/

相关文章:

java - 在运行时控制对 GWT 代码的访问

java - Hibernate Annotations,指定要持久化的组件成员

java - 如何以编程方式生成 Hibernate JPA 模式?

java - 提供了错误类型的 id hibernate

java - Mapbox SDK : Changing a marker position at runtime

访问私有(private)变量的 Java 静态方法

java - 如何在 AppCompatActivity 中使用 getSharedPreferences

Java 从多选框中获取所有元素

hibernate - 为什么 Hibernate 找不到/hibernate.cfg.xml?

hibernate - GORM条件查询过滤列表中的ID