我正在尝试创建一个用户,就像一个魅力一样。但是我不能为他/她分配用户许可。我收到错误消息。字段ObjectId尚未加载或设置。尚未设置哪个字段ObjectId?

    User user = new User(_sessionHelper.getSession());
    user.setName(importResourcesData.getSsoID());
    user.setPersonalName(importResourcesData.getFirstName() + " " + importResourcesData.getLastName());
    User.setEmailAddress(importResourcesData.getEmailAdress());
    user.setPassword(importResourcesData.getSsoID(), importResourcesData.getSsoID());
    user.setAllResourceAccessFlag(false);
    user.setGlobalProfileObjectId(getDefaultGlobalSecurityProfile());

    ObjectId userId = user.create(); //WORKS!!!

      BOIterator<UserLicense> loadResources = _sessionHelper.getElm().loadUserLicenses(new String[]{"LicenseType"}, "LicenseType = 'Timesheets'", null);
      Userlicense ul = loadResources.next();
      //This Fails!
      user.createUserLicense(ul);

最佳答案

一般来说,集成API的结构使得一旦调用对象的create或update之后,就不应继续使用该对象。相反,您应该从API中读取一个新对象并继续使用该新对象。在您的情况下,您可以在调用user.create()之后添加类似的内容

final User user2 = User.load(_sessionHelper.getSession(), null, userId);


然后,您可以在对user2的调用中使用user代替createUserLicense

user2.createUserLicense(ul);

10-04 17:39