@OneToOne 関係を持つ 2 つのモデルがあります。UserモデルとモデルとしましょうPlayer。各ユーザーはプレーヤーであり、各プレーヤーはユーザーです。
これら 2 つのモデルのコードは次のとおりです。
@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;
}
私は常に aPlayerから aUserにアクセスし、User をロードするときに彼の Player もロードされるようにしたい (それが を使用した理由ですfetch = FetchType.EAGER)。
したがって、(最適化の目的で) をロードするUserと、クエリは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を使用しています