【发布时间】:2012-10-19 15:26:04
【问题描述】:
我有 2 个具有 @OneToOne 关系的模型。假设一个模型User 和一个模型Player。每个用户都是玩家,每个玩家都是用户。
这是这两个模型的代码:
@Entity
public class User extends Model {
@Required
public String name;
@OneToOne(fetch = FetchType.EAGER)
public Player player;
}
@Entity
public class Player extends Model {
@Required
public String nickname;
@Required
public Gender gender;
}
我将始终从User 访问Player,并且我希望在加载用户时也加载他的播放器(这就是我使用fetch = FetchType.EAGER 的原因)。
所以我希望(出于优化目的)当我加载User 时,查询是一个同时加载Player 的JOIN 查询。
类似的东西:
select u, p from User u join u.player p where u.player_id = p.id
但是当我查看查询计数和查询调试输出时,我可以看到执行了 2 个查询。 比如:
select u from User u
select p from Player p where p.id = ?
但这没有优化,我怎样才能让 JPA 执行加入请求以获取我的 User 及其 Player ?
感谢您的帮助!
编辑:我正在使用 Play framework 1.2.5
【问题讨论】:
标签: java jpa playframework playframework-1.x