我的实体是:
@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 = "";
...
}
这里的 light 实体类来自 gilead 项目,旨在用于 gwt 序列化支持 - 它不会影响流程。我观察到的是:当我从实体管理器通过 id 加载 ReportSnapshot 时,尽管有惰性关联,我还是自动获取链接的 ReportContents。根据我读到的内容,因为我已经将我的关系设置为非可选关系,所以应该不会被 hppening =(
最佳答案
您使用的是哪个提供商? hibernate does not support lazy loading OneToOne 关联(至少不是开箱即用的)。该页面记录了一些您可以尝试的方法。
关于java - 具有共享 key (MapsId)和延迟加载问题的 OneToOne,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465515/