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.*但不幸的是。”是的,没用