我有一个实体 AuditLog ,它与 AuditParameter 保持一对多的关系:
@Entity
public class AuditLog implements IAuditLog, Serializable {
// ...
@OneToMany(targetEntity = AuditParameter.class, mappedBy = "auditLog")
private List<IAuditParameter> parameters;
}
原因的 AuditParameter 有一个@ManyToOne(targetEntity = AuditLog.class) private IAuditLog auditLog
。
我想获取已经获取的关系列表的所有 AuditLog 记录。我尝试了以下方法:
Session session = ((EntityManagerImpl)em.getDelegate()).getSession();
Criteria audits = session.createCriteria(AuditLog.class)
.setFetchMode("parameters", FetchMode.JOIN);
但实际上这会生成LEFT OUTER JOIN
。有人可以向我解释为什么这会生成一个外部联接以及如何将 AuditParameters 加载到参数集合中来实现?