2015-07-03 65 views
0

我尝试在JHipster项目中为用户添加删除功能。但是,当我删除用户实体出现以下异常: 参照完整性约束冲突:删除JHipster用户

"FK_OAUTH_ACCESS_TOKEN_USER_NAME: PUBLIC.OAUTH_ACCESS_TOKEN FOREIGN KEY(USER_NAME) REFERENCES PUBLIC.T_USER(LOGIN)"

我怎样才能删除用户先删除OAUTH_ACCESS_TOKEN表中的记录吗?

+0

您使用JHipster哪个版本之前删除用户的令牌实现。 – ozgur

+0

我目前的JHipster版本是2.11.1,但是我不知道这个版本是否用于生成项目 –

回答

0

我目前没有数据库在我面前,但是您不妨只是查询您希望删除的用户的OAUTH_ACCESS_TOKEN。因此,您从OAUTH_ACCESS_TOKEN表中删除了这样的行。然后,你应该很好地删除所需的用户。

+0

要使用哪个实体进行删除?我看不到任何与此表链接的域实体或存储库:( –

+0

这里没有明确的JHipster实体,这只是一个存储使用oauth时的访问令牌的实用程序表。上面提到的步骤必须完成直接在数据库中,你必须打开一个数据库客户端,运行一个查询来获得与你想删除的用户相关的oauth标记,一旦找到,你就删除这个记录,然后你就可以删除相应的用户 – Jodevan

+0

有没有合适的方法来实现它?使用Spring Security OAuth API实例? –

1

下面是我通过获取tokenStore参考,并删除用户

@Inject 
private TokenStore tokenStore; 

@RequestMapping(value = "/accounts/{id}", 
     method = RequestMethod.DELETE, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity delete(@PathVariable Long id){ 
        User user = userRepository.findOne(id); 

        log.debug("Account tokens ("+id+") deletion"); 
        Collection<OAuth2AccessToken> tokens = tokenStore.findTokensByClientIdAndUserName("clienid", user.getLogin()); 
        for (OAuth2AccessToken token : tokens) { 
         tokenStore.removeAccessToken(token); 
        } 

        log.debug("Account ("+id+") deletion"); 
        userRepository.delete(user); 

}