【问题标题】:Eager loading at Collection level with Annotation in Hibernate在 Hibernate 中使用 Annotation 在集合级别急切加载
【发布时间】:2019-07-04 20:14:34
【问题描述】:

能够在 Collection 级别实现积极/急切的加载。

我知道使用 XML 在集合级别进行预加载

但是我如何在集合级别使用注释来实现相同的效果。

学生坚持班

这里我需要对 Collection Type semails 字段进行预加载。

【问题讨论】:

    标签: java hibernate hibernate-mapping


    【解决方案1】:

    如果您使用的是休眠模式,您可以将@Fetch 注释与 FetchMode.JOIN 一起使用。这将使 hibernate 使用 join 和 fetch 集合,通过单个选择查询加入您的元素集合表。 确保您的收藏有两个注释:

    @ElementCollection(fetch=FetchType.EAGER)
    @Fetch(FetchMode.JOIN)
    

    【讨论】:

    • @llya Serebryannikov ,不工作。仍然无法将电子邮件记录作为急切加载。
    • @Kms,你能演示一下 hibernate 做了什么查询吗?
    • @liya,执行了错误的步骤。是的,我能得到那个。请找到 Hibernate 系统生成的 SQL 查询。休眠:选择 student0_.sid 作为 sid1_1_0_,student0_.sname 作为 sname2_1_0_,semails1_.sid 作为 sid1_0_1_,semails1_.emails 作为 emails2_0_1_,semails1_.idx 作为 idx3_1_ 从 StudentsTable student0_left outer join Emails semails1_ on student0_.sid=semails1_.sid where student0_ .sid=?
    【解决方案2】:

    可以在注解@ElementCollection中设置获取类型:

    @ElementCollection(fetch=FetchType.EAGER)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      相关资源
      最近更新 更多