两个实体具有双向OneToOne关系 - Inverse Relationships.(如下所述) 我想从DB中获取“学习者”时使用“LearnerProfile”来延迟加载行为。 如果没有,请提供一些解决方法。
@OneToOne (fetch=FetchType.LAZY)
@JoinColumn(name = "LEARNER_ID")
private Learner learner ;
@OneToOne(mappedBy="learner", fetch=FetchType.LAZY)
private LearnerProfile learnerProfile ;
答案 0 :(得分:1)
如果您想在每次加载学习者时加载LearnerProfile,可以在learnerProfile
关系中使用EAGER:
@OneToOne(mappedBy="learner", fetch=FetchType.EAGER)
private LearnerProfile learnerProfile ;
但是我不推荐这个。 EAGER,有一段时间存在于您的代码中,之后才真正hard to remove。
另一个策略是使用FETCH JOIN
进行JPQL查询:
SELECT l from Learner l FETCH JOIN l.learnerProfile
答案 1 :(得分:0)
不要使用@OneToOne关系(几乎总是糟糕的设计决定)。而是使用@Embedded + @Embeddable。