spring-data-jpa 是否可以安全地删除此左联接?

vbopmzt1  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(127)

我在SpringData存储库中使用了以下JPA查询方法

public interface UserRoleRepository extends CrudRepository<UserRole, UUID> {

    @Query("""
        from UserRole ur
        join ur.role
        join ur.user
        left join ur.businessUnit
        where ur.user.id = :userId""")
    List<UserRole> getUserRoles(UUID userId);
}

假设没有 predicate 应用于ur.businessUnit,该查询是否可以简化为

from UserRole ur
join ur.role
join ur.user
where ur.user.id = :userId

每个用户角色都有0个或1个关联的业务单位。在JPA术语中,这在UserRole类中定义为:

@ManyToOne
@JoinColumn(name = "business_unit_id")
private BusinessUnit businessUnit;
camsedfj

camsedfj1#

左连接是保留基数的,因此只要不引用连接别名(在您的示例中甚至不存在),就可以安全地删除该连接。

相关问题