我在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;
1条答案
按热度按时间camsedfj1#
左连接是保留基数的,因此只要不引用连接别名(在您的示例中甚至不存在),就可以安全地删除该连接。