JPA Spring数据本机查询和子实体初始化

JPA Spring数据本机查询和子实体初始化,jpa,spring-data-jpa,spring-data,Jpa,Spring Data Jpa,Spring Data,我拥有以下实体: @Table(name = "tasks") public class Task implements Serializable, TextCard { @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "user_id", nullable = false) private User user; .... } 我有以下带有本机查询的Spring数据存储库

我拥有以下实体:

@Table(name = "tasks")
public class Task implements Serializable, TextCard {

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "user_id", nullable = false)
    private User user;

....
}
我有以下带有本机查询的Spring数据存储库方法:

@Query(value = "select distinct t.*, u.* from tasks t " +
            "join locations l2 on t.location_parent_path <@ l2.parent_path " +
            "join categories c2 on t.category_parent_path <@ c2.parent_path " +
            "left join task_applications ta on ta.task_id = t.id " +
            "join users u on t.user_id = u.id " +
            "where l2.id in :locationIds and c2.id in :categoryIds and t.status = :status and t.user_id not in :excludeTaskUserIds and (ta.user_id not in (:excludeTaskUserIds) or ta.user_id is null)",
            countQuery = "select count(distinct t.*) from tasks t " +
                    "join locations l2 on t.location_parent_path <@ l2.parent_path " +
                    "join categories c2 on t.category_parent_path <@ c2.parent_path " +
                    "left join task_applications ta on ta.task_id = t.id " +
                    "where l2.id in :locationIds and c2.id in :categoryIds and t.status = :status and t.user_id not in :excludeTaskUserIds and (ta.user_id not in (:excludeTaskUserIds) or ta.user_id is null)",
            nativeQuery = true)
Page<Task> findByLocationIdsAndCategoryIds(@Param("locationIds") Set<Long> locationIds, @Param("categoryIds") Set<Long> categoryIds, @Param("status") String status, @Param("excludeTaskUserIds") Set<Long> excludeTaskUserIds, Pageable pageable);
@Query(value=“从任务t中选择不同的t.*,u.*”+

“在t.location\u parent\u路径上连接位置l2如果你使用JPQL,那么你可以使用
join fetch
。对于本机查询,我认为你应该使用自定义存储库并显式地选择每一列。join fetch-你选择t.*但u没有星。这会产生所有用户列吗?@RobertNiestroj很好,谢谢。我添加了u.*但不幸的是。”是的,没用