OneToOne具有共享密钥(MapsId)和延迟加载问题

时间:2011-03-28 21:53:13

标签: java hibernate lazy-loading jpa-2.0 one-to-one

我的实体是:

@Entity
public class ReportSnapshot extends LightEntity {
  @Id
  @GeneratedValue
  private long id;

  @OneToOne(fetch = FetchType.LAZY, optional = false, mappedBy = "snapshot")
  private ReportContents contents;

  @Embedded
  private WeekNumber week;
  ...
}

@Entity
public class ReportContents extends LightEntity {
  @Id
  private long id;

  @MapsId
  @OneToOne(optional = false)
  private ReportSnapshot snapshot;

  @Lob
  @Column(nullable = false)
  private String reportText = "";
  ...
}

这里轻实体类来自gilead项目,用于gwt序列化支持 - 它不会影响流程。我观察到的是:当我从实体管理器通过id加载ReportSnapshot时,尽管存在惰性关联,我仍会自动获取链接的ReportContents。根据我所读到的内容,因为我将我的关系设置为非可选项,因此不应该喋喋不休=(

1 个答案:

答案 0 :(得分:1)

您使用的是哪家提供商? OneToOne关联的休眠does not support lazy loading(至少不是开箱即用)。该页面记录了您可以尝试的一些方法。