A有两个实体:Report
和ReportSection
绑定OneToMany
关系。通常,每个报告都包含多个部分。
我使用OpenJPA 2.2.1
,最近我在尝试获取特定Report
时遇到了错误,同时也急切地加载了部分。
em.createNamedQuery("REPORT.findSingleWithSections").setParameter("id", id).getSingleResult();
其中REPORT.findSingleWithSections
是:
SELECT r FROM Report r LEFT JOIN r.sections s WHERE r.id = :id;
我的期望:要获取的单个Report
对象和所有部分。
我得到了什么: NoUniqueResultException
例外
我确信查询是通过主键完成的,因此数据库中实际存在双重记录的无可能性。
如果我将getSingleResult
更改为getResultList
,我会为每对获得一个(Report -> ReportSection)
,据我所知,这是不正确的行为。
这是一个已知的错误还是我在这里做错了什么?任何提示都会有所帮助