Grails 更新数据库中的用户后如何更新主体?

Grails 更新数据库中的用户后如何更新主体?,grails,spring-security,spring-ldap,Grails,Spring Security,Spring Ldap,我想我问的和这个问题问的是同一件事 以下是我正在做的: 1.)不在我的数据库中的用户首次登录到我的应用程序 2.)用户通过LDAP进行身份验证 3.)我监听身份验证成功事件。当检测到该用户时,如果该用户不存在,我会将其添加到我的数据库中;如果该用户存在,我会使用LDAP信息更新其信息 我的问题是,如果我第一次将用户添加到我的数据库中,他们在添加之后才有id。我想更新principal,以便可以从principal对象访问id 我已经尝试过所描述的方法,但没有效果。不清楚你在问什么,如果没有代码示

我想我问的和这个问题问的是同一件事

以下是我正在做的:

1.)不在我的数据库中的用户首次登录到我的应用程序

2.)用户通过LDAP进行身份验证

3.)我监听
身份验证成功事件
。当检测到该用户时,如果该用户不存在,我会将其添加到我的数据库中;如果该用户存在,我会使用LDAP信息更新其信息

我的问题是,如果我第一次将用户添加到我的数据库中,他们在添加之后才有
id
。我想更新
principal
,以便可以从
principal
对象访问
id


我已经尝试过所描述的方法,但没有效果。

不清楚你在问什么,如果没有代码示例,这甚至是不可能的。我要说的是,校长的
id
在我的数据库中存在之前是无法访问的(显然),但是,即使将主体添加到数据库中,在当前会话期间更新主体对象似乎也不是一个好方法。因此,主体的
id
不能从主体对象访问,除非它们被添加到数据库中,注销,然后重新登录。如果您使用的是序列,则在
principal.save()
之后,主体中应该有一个id。如果没有,您需要刷新会话。不清楚您在问什么,如果没有代码示例,甚至可能不可能。我要说的是,校长的
id
在我的数据库中存在之前是无法访问的(显然),但是,即使将主体添加到数据库中,在当前会话期间更新主体对象似乎也不是一个好方法。因此,主体的
id
不能从主体对象访问,除非它们被添加到数据库中,注销,然后重新登录。如果您使用的是序列,则在
principal.save()
之后,主体中应该有一个id。如果没有,则需要刷新会话。