The UserConnection.UserId column must uniquely and definitively identify the local application user. Therefore, if you're using a volatile value such as an email address, then the connection will essentially be broken (an orphaned connection will remain in the table, though) for any user that changes their email address.
Now...what you *could* do is let them change their email address, but also do a sweep through the UserConnection table to update their email there, too. That should work fine.
But a better approach would be to never use a volatile value such as email. Instead have a primary key (perhaps a Long value) and refer to that in the UserConnection table. Then the user can change their email all they want, but their internal ID remains constant.
Craig Walls
Spring Social Project Lead