【发布时间】:2020-02-10 15:27:45
【问题描述】:
使用查询 SQL 与 hql 获取不同的结果。 我正在使用 Spring 回购和休眠,如下所示。但是,如果我运行由休眠生成的相同 SQL,我将获得前 5 条记录,但我的列表 customActivationPlans1 包含 4 条记录。 为什么hibernate和HQL生成相同的SQL会有差异。
我还注意到当我的左连接为空时会发生这种情况。 join fetch c.latestRun r left join fetch r.runStatuses s 数据库中没有记录。
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
private PlanRun latestRun;
列出 customActivationPlans1 = customPlanRepository.findAllDataSetSelnsAndStatusByTenantId(RequestUtil.getSessionTenant(), dataSourceType);
@Query("select DISTINCT c from CustomActivationPlan c join fetch c.dataSetSelections s left join fetch c.latestRun r left join fetch r.runStatuses s "
+ "where c.tenantId =:tenantId and s.tenantId =:tenantId and c.dataSourceType = :dataSourceType")
public List<CustomActivationPlan> findAllDataSetSelnsAndStatusByTenantId(@Param("tenantId") String tenantId, DataSourceType dataSourceType);
【问题讨论】:
标签: java hibernate spring-data-jpa