![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
MakTpaxep |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
Две таблицы: users и tasks.
Подскажите как реализовать такую штуку: Есть user, который авторизовался при помощи spring security. Надо вытащить его ID. Мне надо выбрать из tasks все строки связанные с текущим юзером через id. В tasks есть foreign key соответсвенно. Извиняюсь если вопрос задан криво или не точно. Тут такое обилие технологий, спобосов разных, я запутался. UPD Ну вот вроде сам чуть-чуть разобрался. Сделал запрос при помощи criteria. Смотрится конечно не очень. Как обычный запрос.
Остался только вопрос где взять ID текущего пользователя. Имя я беру через principle. Думаю можно сделать ещё один запрос и я получу ID. Но всё-таки я что-то не то делаю... Это сообщение отредактировал(а) MakTpaxep - 26.12.2012, 00:21 |
|||
|
||||
MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет. Если ты используешь Spring Security & JDBC DaoAuthenticationProvider, то можешь написать кастомную реализацю JdbcDaoImpl, где кроме логин/пароль, можешь вытащить еще и ИД и своего кастомного запроса.
Примерно так:
И дальше твой principle как раз и есть этот объект MyUser. Не смотрел: может в 3.2 это поменяется, чтобы быть проще. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
MakTpaxep |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
Спасибо за совет.
Идею я уловил, но в коде пока что много для меня непонятного. Решил пока к себе не пересаживать) Вся соль в этом кусе как я понял?
Ну вообщем действительно сложновато. Для меня по крайней мере. Сейчас я сделал как и планировал два запроса: В TasksDAO
А в контроллере так
Работает. Вот так вот)) Раз уже эта тема про гибернейт - поястине, пожалуйста, какая разница как делать запросы через гибернейт: У себя совместил два подхода где-то подсмотренных (createQuery и criteria. А есть ещё что-то в духе hibernateTemplate. UPD А ещё мне очень понравилось вот это:
Так кратко) Это сообщение отредактировал(а) MakTpaxep - 26.12.2012, 17:02 |
||||||||
|
|||||||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
createQuery: рекомендую использовать это для сложных статических запросов.
criteria: подходит для запросов по одной Entity с вариантами фильтрации, сортировки и пейджирования. hibernateTemplate: умер этот подход. В Spring 3.1 уже не рекомендуют его использовать. getById(int id): ничего удивительного. В конечном итоге просто запрос на одну Entity по ее ИД. А то, что ты выкрутился через дополнительный запрос для, так ничего удивителнього: пусть будет - лишь бы работало как надо и быстро. Бывает и хуже.
Да, ну кастомная реализация класса User из Spring Security -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
MakTpaxep |
|
||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 25.11.2010 Репутация: нет Всего: нет |
Спасибо, за объяснения! Сам бы искал очень долго.
Появился ещё вопрос связанный с гибернейтом: При попытке сохранить новый экземпляр сущности выдаётся ошибка
Ругается из-за того, что в классе сущности у меня такие записи:
Первая используется чтобы во вьюшке можно было писать
То есть чтобы сразу обращаться к объекту юзера, а не доставать его лишний раз через ID. А без второй записи я не знаю как записать объект в БД. Когда я сохраняю новый Task, нужны все поля. Вот какую штуку я сделал в форме, чтобы было удобно заполнять assignee_id
Как теперь выкручиваться? UPD Дошёл своими умом переборов вариантов. Везде где подразумевается колонка, можно использовать assignee.id Вот примеры:
Круто Это сообщение отредактировал(а) MakTpaxep - 26.12.2012, 20:50 |
||||||||||||
|
|||||||||||||
MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Должно быть так:
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |