没有。如果您在User 或UserLogin 上使用“describe”调用,您会看到它们是链接的,但describe 的结果中没有“relationshipName”字段。这就是用来链接的,有点像普通数据库中的表别名。
// No going "up"
System.debug(UserLogin.UserId.getDescribe().getRelationshipName());
// And no going "down" either
for(Schema.ChildRelationship cr : User.SObjectType.getDescribe().getChildRelationships()){
if(cr.getChildSObject() == UserLogin.sObjectType && cr.getField() == UserLogin.UserId){
System.debug(cr);
System.debug(cr.getRelationshipName());
}
}
所以你可以这样做
SELECT Id, Name,
(SELECT PermissionSet.Name FROM PermissionSetAssignments)
FROM User
因为PermissionSetAssignment.AssigneeId 有relationshipName。但不是
SELECT Id, Name,
(SELECT IsFrozen FROM UserLogin)
FROM User
“向上”也不起作用。 SELECT Account.Name FROM Contact 工作正常,但 SELECT IsFrozen, User.Name FROM UserLogin 不行。再说一遍 - 因为描述结果中没有 relationshipName。
您必须单独查询并将它们链接到代码中,例如Map<Id, User>。