如何设置JPQL和/或hibernate以仅从具有复杂的嵌套属性Web的实体返回可管理数量的数据?具体来说,此查询:
@Override
public Patient findPatientByHjid(Long hjid){
Query query = this.em.createQuery("SELECT patient FROM Patient patient WHERE patient.hjid =:id");
query.setParameter("id", hjid);
return (Patient) query.getSingleResult();
}
正在生成过长的hibernate sql。我已经多次检查调试器中的程序流,并且我看到它每次生成相同的两个hibernate sql语句,即使我不明白它为什么会生成多个SQL语句。第二个语句非常冗长,它会引发以下错误:
java.sql.SQLException: Too many tables; MySQL can only use 61 tables in a join
为了保持这个帖子的可读长度,我已经将一些冗长的资源上传到文件共享站点。 请注意,文件共享站点中心证明文本是正确的,即使它在eclipse中是正确的。您可以阅读由上述JPQL by clicking on the following link产生的两个hibernate查询。此外,您还可以读取整个堆栈跟踪at this link。您可以阅读Patient.java
类by clicking on this link的代码。
如何更改我的代码,以便我只从查询中获取少量摘要数据,从而避免所有这些愚蠢的广泛不必要的连接?