说有两个类,Task和JobContentSummary, 我们有这两个的两个版本: 版本1:
public class Task {
@OneToOne(mappedBy="task")
private JobContentSummary jobContentSummary;
}
public class JobContentSummary {
@OneToOne()
@JoinColumn(name = "task_id")
private Task task;
}
版本2:
public class Task {
@OneToOne()
@JoinColumn(name = "jobcontent_summary_id")
private JobContentSummary jobContentSummary;
}
public class JobContentSummary {
@OneToOne(mappedBy="jobContentSummary")
private Task task;
}
然后运行以下代码:
String hql = "from Task t left join fetch left join fetch t.jobContentSummary";
Query query = getSession().createQuery(hql);
query.list();
我发现使用版本2时,Hibernate为每个Task实例对JobContentSummary发出一个额外的查询,而使用版本1时,该问题不存在。
我正在使用Hibernate 4.3.5.Final。上层现象是错误(可能是在以后的版本中解决了吗)还是设计?
谢谢。