Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
1

Обновление БД при логине

19.05.2017, 04:05. Показов 778. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно что бы когда юзер логинился, в БД обновлялся столбец userrank, юзер получает рандомное число и но прибавляется к его рангу.

Проблема в том, что в JpaRepository нету метода обновления кого то столбца в базе (или я не нашел и не понял).
https://github.com/heros79/TaskMLab проект

Что можете посоветовать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2017, 04:05
Ответы с готовыми решениями:

Использование прокси при логине
Доброго новогоднего дня. У меня вопрос, есть у меня логин в ВК, работает норм, но если добавляю...

Моргание экрана при логине
Запускаю компьютер - нужно ввести пароль(начинает моргать экран) все ввожу правильно и жму enter....

Фильтрация символов при логине
Вот при логине на сайт, я зделал для себя функцыю для фильтрации всяких ненужных символов, вот код...

Вылеты при логине в опере
Проблема в следующем - при логине на каком-либо сайте (ну естессно где авторизация требуется) через...

17
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.05.2017, 09:45 2
достаешь из репозитория юзера, которого надо обновить, меняешь, делаешь repo.save(newUser)
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.05.2017, 10:57  [ТС] 3
xoraxax, по другому никак, обновлять все столбцы?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
19.05.2017, 11:05 4
нативный апдейт напишите
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
19.05.2017, 11:08  [ТС] 5
neske, писал через Factory но там что то при выборке (FROM User user) ошибку кидает, что то с версиями не то
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.05.2017, 12:08 6
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
писал через Factory
Цитата Сообщение от neske Посмотреть сообщение
нативный апдейт напишите
вам же сказали. Пишите нативный апдейт. Какая фактори?
Java
1
@Query("UPDATE user set bla=?1 where id = ?2" native=true)
точный синтаксис непомню, думаю сможете нагуглить
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
21.05.2017, 17:17 7
Цитата Сообщение от DavidKarchikyan
по другому никак, обновлять все столбцы?
Все не обновляется, только необходимые, да и в любом случае это 1 запрос, а в прочем вам сказали верно, нативный запрос - самое то, только @Modifying не забудьте добавить(вроде именно такая аннотация
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
21.05.2017, 19:10  [ТС] 8
Java
1
2
3
4
@Transactional
    @Modifying
    @Query("UPDATE User users SET userrank = 'setRank()' WHERE username = 'user.getUserName()'")
    int setRank (@Param("userrank") int userrank);
не работает, а указание native выдает ошибку
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.05.2017, 22:22 9
DavidKarchikyan, наверное надо погуглить...у вас хрень какая-то написана....

Напишите этот запрос так чтобы он работал в клиенте вашей БД. Затем скопируйте его к себе в код.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
21.05.2017, 23:46  [ТС] 10
KEKCoGEN,
Java
1
2
3
4
    @Transactional
    @Modifying
    @Query(value = "UPDATE users SET userrank = :userrank WHERE username = :username", nativeQuery = true)
    int setRank (@Param("userrank") int userRank);
Нагуглил но все равно не работает

Добавлено через 45 минут
https://github.com/heros79/TaskMLab
Буду рад и признателен если укажете на мои ошибки, первый ЕЕ проект
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
22.05.2017, 05:07 11
Цитата Сообщение от DavidKarchikyan
:userrank
На сколько помню spring data не поддерживает именованные параметры, используйте ?1, ?2 и т.д.

К тому же у вас в запросе еще есть переменная username, которая никак не передается
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
22.05.2017, 12:02  [ТС] 12
Цитата Сообщение от LeX Посмотреть сообщение
?1, ?2
это нумерация столбцов?

Добавлено через 14 минут
или нумерация параметров функции?

Добавлено через 11 минут
Java
1
2
@Query(value = "UPDATE users SET userrank = :userrank WHERE username = :username", nativeQuery = true)
    int setRank (@Param("userrank") int userRank, @Param("username") String username);
и так
Java
1
2
@Query(value = "UPDATE users SET userrank = ?1 WHERE username = :username", nativeQuery = true)
    int setRank (@Param("userrank") int userRank, @Param("username") String username);
не выдает ошибку, но при смене :username на ?2 выдает ошибку

Добавлено через 5 минут
сори нет ошибок кавычку удалили просто)))

Добавлено через 29 минут
Не выходит не фига(((
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.05.2017, 14:17 13
DavidKarchikyan, покажите последний вариант запроса который у вас.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
22.05.2017, 16:59  [ТС] 14
Java
1
2
3
4
 @Transactional
    @Modifying
    @Query(value = "UPDATE users SET userrank = ?1 WHERE username = ?2", nativeQuery = true)
int setRank (@Param("userrank") int userRank, @Param("username") String userName);
пробовал и без указания @Param

Добавлено через 2 минуты
Я думаю может вызов его неправильно сделал, в коде все работает, регистрация логин и так далее, при регистрации ранг дается заносится, список выводит. Вот только при логине ранг не меняется.

Добавлено через 2 часа 33 минуты
Hibernate: UPDATE users SET userrank = ? WHERE username = ?
лог при любых выше перечисленных способах

Добавлено через 56 секунд
Java
1
2
3
4
5
    @Override
    @ModelAttribute(name = "saverank")
    public int saveRank(User user) {
        return userDao.setRank(user.getUserRank() + new Random().nextInt(100), user.getUserName());
    }
реализация

Добавлено через 1 минуту
Java
1
2
3
4
5
    @RequestMapping(value = {"/", "/welcome"}, method = RequestMethod.GET)
    public String welcome (User user, Model model) {
        userService.saveRank(user);
        return "welcome";
    }
контроллер
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.05.2017, 22:24 15
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
Hibernate: UPDATE users SET userrank = ? WHERE username = ?
это говорит о том что все запрос работает как надо. Выводите параметры перед тем как передаете в дао и сравнивайте результат. Возможно проблема в другом месте в коде которого тут нет или проблемы нет вовсе.

Добавлено через 16 секунд
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
Hibernate: UPDATE users SET userrank = ? WHERE username = ?
это говорит о том что все запрос работает как надо. Выводите параметры перед тем как передаете в дао и сравнивайте результат. Возможно проблема в другом месте в коде которого тут нет или проблемы нет вовсе.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
22.05.2017, 22:26  [ТС] 16
KEKCoGEN, Да вроде все норм но не обновляется база))
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.05.2017, 22:30 17
DavidKarchikyan, пишите ваше рандомное значение в лог прежде чем слать в ДАО. Так же пишите в лог выражение где вы ранк вычесляете и юзернейм. Остановите программу в дебаге сразу после коммита транзакции и смотрите в БД на результат (а ещё лучше напишите юнит тест)
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
22.05.2017, 22:34  [ТС] 18
KEKCoGEN, помучаюсь но вижу что проблема в получении записи из БД через ДАО, не знаю почему но через JPA
findALL()получает все параметры, но getUserRank только ноль получает, хотя там значение не 0
0
22.05.2017, 22:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2017, 22:34
Помогаю со студенческими работами здесь

Разграничение возможностей юзера (при логине)
Привет. Плз, расскажите, как делается разграничение (к примеру, контролов на странице сайта) при...

Label при неверном логине/пароле
Есть окно авторизации,хочу чтобы при вводе неправильного логина или пароля появлялся Label1.Text =...

Как отследить ошибку при логине к Oracle?
Значит делаю я логин к базе Оракл: login, password берётся из формы. Function...

Открытие страницы в зависимости от роли при логине
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru