当前位置: 首页 > 面试题库 >

休眠:在HQL中覆盖映射的EAGER?

蔡修远
2023-03-14
问题内容

可以LAZY使用在HQL中覆盖LEFT JOIN FETCH

FROM Obj AS obj LEFT JOIN FETCH obj.otherObj WHERE obj.id = :id

是否也可以覆盖EAGER?怎么样?


问题答案:

Hibernate
Docs
中的此代码段中的限定词意味着您可以用热切的方法覆盖懒惰,但不能用其他方法来替代:

如果您正在使用属性级别的延迟获取(通过字节码检测),则可以强制Hibernate使用获取所有属性立即在第一个查询中获取延迟属性。

不寻常的是,如果您使用Criteria
API从急切变为懒惰,则看起来可以。只需调用setFetchMode(FetchMode.LAZY)相关的联接即可。



 类似资料:
  • 问题内容: 我有一个使用Hibernate在数据库上进行CRUD操作的Web应用程序。我收到一条错误消息,说该表未映射。查看Java文件: 错误信息: 这是我的方法: : 我应该如何修改才能正常工作? 问题答案: 异常消息怎么说?它说: 这告诉你什么?它告诉您未映射。也就是说,没有称为的映射类型。 确实,没有。您的映射类型称为。它映射到名为的表,但类型称为。在编写HQL(或JPQL)查询时,您使用

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么

  • 问题内容: 我有一个颜色枚举 我有包含它的MyEntity。 我已经有一个UserType来映射我的枚举。 您知道如何在Hibernate hbm.xml中映射枚举集吗? 我需要一个UserType还是最简单的方法? 谢谢 编辑: 只是为了说明一下,我正在寻找 hbm.xml 配置而不是@CollectionOfElements注释 问题答案: 我使用EnumSet映射线程中的解决方案,该解决方案

  • 问题内容: 有人可以解释在xml映射文件中使用逆函数的方法吗,我正在阅读本教程,但无法理解在映射文件中的逆函数的用法? 谢谢 问题答案: 逆仅决定关系中的哪个实体负责更新数据库以反映关联。 假设一对多的双向关联。代码A和B中有两个类,A包含一组B,B维护对A的引用。在数据库级别,只有一个外键要更新,B的表包含一个到主键的列的A。 在这种情况下,假设我们将inverse = true放在集合侧。这意

  • 问题内容: 我有一个hibernate映射的Java对象,其中充满了许多正常的可hibernate映射字段(例如字符串和整数)。 我向其中添加了一个新的嵌入式字段(该字段位于同一表中- 而不是映射),它是一个。我已经明确表示该字段可能实际上不包含任何内容(而不是每次访问它都必须进行处理)。 如何在文件中设置映射?我想hibernate来自动转换数据库到的,当它获取对象。它还应将的非空实例转换为的。