我目前在播放框架 1.2.4 中遇到 JPA 问题。
我需要在一个单独的数据库中有一个 UserOptions 模型,并且想要懒惰地加入它,因为它只需要在一个查询中。
在这个查询中,我想急切地加载选项,通过搜索我发现只能通过使用连接查询来完成。
如果我使用渴望而不是懒惰,则使用 User.findById() 和选项一切都会好起来的,并且在一个查询中找到了用户。
但是当我使用“left join fetch”查询时,play 会发送两个查询。所以继承人的查询:
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 会为 fetch 查询发送两个查询?
提前致谢