現在、PlayFramework1.2.4でJPAに問題があります。
別のデータベースにUserOptionsモデルが必要であり、それを怠惰に結合したいので、1つのクエリでのみ必要になります。
このクエリでは、オプションを熱心にロードしたいと思います。検索すると、結合クエリを使用することによってのみ実行できることがわかりました。
怠惰な代わりに熱心に使用する場合、User.findById()とオプションを使用することですべてがうまくいき、ユーザーは1つのクエリで見つかります。
しかし、「左結合フェッチ」クエリを使用すると、playは2つのクエリを送信します。だからここにクエリがあります:
User.find("
SELECT
user
FROM
User user
LEFT JOIN FETCH
user.options options
WHERE
user.id = ?
", Long.parseLong(id)).first();
そしてここにモデル:
@Entity
public class User extends Model
{
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
public UserOptions options;
// ...
}
@Entity
public class UserOptions extends Model
{
@OneToOne(fetch = FetchType.LAZY)
public User user;
}
問題は、playがフェッチクエリに対して2つのクエリを送信する理由です。
前もって感謝します