gpt4 book ai didi

java - ew@OneToOne 与不使用 JOIN 的 play 框架的关系

转载 作者:行者123 更新时间:2023-12-01 18:58:59 24 4
gpt4 key购买 nike

我有 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 并且我希望当我加载用户时,他的 Player 也会被加载(这就是我使用 fetch 的原因= FetchType.EAGER)。

因此,我希望(出于优化目的)当我加载 User 时,查询是一个 JOIN 查询,同时也会加载 Player。像这样的东西:

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 框架 1.2.5

最佳答案

在 User 类中,正如您在评论中注意到的那样,玩家可以为空

public static void findByIdWithPlayer(Long id) {
find("select distinct user from User user left join fetch user.player where user.id=?", id).first();
}

关于java - ew@OneToOne 与不使用 JOIN 的 play 框架的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com