2015-07-03 1 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

Есть ли какой-либо правильный способ сделать это? Например, с помощью OAuth API Spring Security? –

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); 

}