|
|
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Допустим у меня есть таблица пользователей и таблица коментариев их. Нужно связать их один к многим и многие к одному соответственно. В таблице коментариев напишу: Код: java 1. 2. 3. Всё какбы понятно и просто. Далее напишу метод, который вернет мне Lист с коментариями пользователей и собсно самих пользователей.. criteria.setFetchMode("account", FetchMode.JOIN); и всё такое. Передам этот Lист в JSP и там получу имя пользователя напротив каждого коментария. А можно как-то ещё получить имя пользователя в JSP если не использовать @ManyToOne, а просто в таблице коментариев сделать поле id_user? Ну может примерчик какой есть с учетом, что TomCat 6 и нельзя там вызывать методы. Как выкрутится? Подскажите пожалуйста. Получается в JSP передам Lист коментариев и у каждого элемента будет свойство id_user. Т.е. айдиху пользователя только получу, а как по ней имя тамже получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 15:49:13 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
А цель какая? Не нравится JOIN? Догрузи отдельным запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 15:54:19 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabА можно как-то ещё получить имя пользователя в JSP если не использовать @ManyToOne, а просто в таблице коментариев сделать поле id_user? ты его и сделал, указав аннотацию хиберу. Насчёт 6-ки не в курсе такого изврата, но ставь 7-ку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 15:55:31 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА цель какая? Не нравится JOIN? Догрузи отдельным запросом. Как отдельным запросом грузить? Нужно в самом JSP передать какойто обьект, который по id_user будет возвращать его имя? Но получается что методы не выполнить в шестерке. Как это делать? Petro123Насчёт 6-ки не в курсе такого изврата, но ставь 7-ку. Не могу ничего ставить там. Что есть, с тем и приходится выкручиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:05:01 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jab, в хибере afaik есть вычисляемое псевдо поле" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:08:39 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabКак отдельным запросом грузить? FetchMode.SELECT jabНужно в самом JSP передать какойто обьект, который по id_user будет возвращать его имя? Почему именно в JSP? Это самоцель какая-то? Или что? Почему не выбрать автора сразу? jabНо получается что методы не выполнить в шестерке. Как это делать? Какие методы?? О чем речь? При чем здесь вообще Tomcat? Свойства из EL отлично вызываются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:10:54 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
В чем проблема использовать @ManyToOne ? Если хочется отказатся от ORM в пользу более "насыщенной" модели, то делаешь свойство getAuthor(), которое по id через репозиторий вытягивает объект. Посмотри паттерн Repository у Фаулера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:15:08 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Проблема какая-то надуманная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:20:03 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:25:16 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПочему именно в JSP? Это самоцель какая-то? Или что? Почему не выбрать автора сразу? А как сразу то? Должна быть колекция сообщений у которых должно быть свойство обьект пользователь (private Account account;), а не просто его id_user. Ну или хотябы свойство имя пользователя или тот параметр, который мне нужен. Это мне заранее надо както в моделе сообщений прописывать или делать ещё одну модель сообщений с этим свойством спецально заточенную под это дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:37:03 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Так. По порядку. jabВсё какбы понятно и просто. Далее напишу метод, который вернет мне Lист с коментариями пользователей и собсно самих пользователей.. criteria.setFetchMode("account", FetchMode.JOIN); и всё такое. Передам этот Lист в JSP и там получу имя пользователя напротив каждого коментария. Что не так в этой модели? Почему хочется сделать иначе?: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:38:57 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabДолжна быть колекция сообщений у которых должно быть свойство обьект пользователь (private Account account;), а не просто его id_user. Если использовать прокси, то так и будет. С той лишь разницей что id будет не в comment.id_user, а в comment.user.id. Какая разница где он находится? На что это влияет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:40:26 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЧто не так в этой модели? Почему хочется сделать иначе? С этой моделью всё хорошо и всё в порядке. Именно так я делал раньше. А сейчас вот получилось так, что у меня нет этой связки, а есть просто колумн id_user. Вот по этому и хотел узнать, как можно добраться до имени пользователя, не переделывая модель под много к одному. Т.е. может есть простой способ добраться, про который я не знаю. Хотел расширить кругозор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:46:06 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jab, я читал такие подходы: - действительно, view модель не соответствует модели хибера, поэтому перед отдачей в респонс её доводят черед DTO\VO\JOIN Но мне это не нравится, т.к. я ленивый программист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:47:57 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabА сейчас вот получилось так, что у меня нет этой связки, а есть просто колумн id_user. А куда она делась? jabВот по этому и хотел узнать, как можно добраться до имени пользователя, не переделывая модель под много к одному. Т.е. может есть простой способ добраться, про который я не знаю. Хотел расширить кругозор. Можно добавить транзиентное поле в коментарии. И после загрузки проставить автора. Желательно всё это делать до JSP. Тогда и вопросов как тот или иной метод вызывать из JSP не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:49:25 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
на хабре обсуждалось, нужны ли id на клиенте и как их заменять на имена или развёрнутые связки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:50:08 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Так вот, насчет лени. У меня сейчас есть: Код: java 1. 2. А нужно переделать на: Код: java 1. 2. 3. Соответственно в табличке с комментами нужно добавить FK на акаунт, ну или выгрузить все данные, перекриэйтить таблички хибером всё заново и загрузить данные поверх в пустые новые таблички. Как-то много действий надо делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:52:37 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jab, приведи структуру таблиц в БД реальную "сейчас есть". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:59:25 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Хотя может и правда, имеет смысл делать облегченные модельки. И грузить в них только нужное .createSQLQuery(query).list(); из запроса. Потом эту модельку отдавать в JSP. Там обращаться к свойствам. Всё получается просто и понятно и минимум памяти отнимет на неиспользуемое. Только получится ухожу от FK в БД. Целостность придется как-то вручную поддерживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:01:12 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabЦелостность придется как-то вручную поддерживать. плохо. Лучше переделать. Приведи схемку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:04:38 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
вот минимум что нужно (если угадал) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:11:33 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Petro123приведи структуру таблиц в БД реальную "сейчас есть". Задолбаюсь тут приводить структуры.. там много чего надо приводить и разбираться потом в этом никому не захочется. Petro123 Смотри! Попробую на словах обьяснить. Идея такая. Есть у меня пользователи и есть у пользователей публикации. Пользователей может быть много и у каждого пользователя может быть много публикаций. Публикация из себя представляет обложку, наименование, некоторое описание, текст публикации, к каким категориям относится, ну и ещё некоторые параметры. Мне нужно получить мои публикации, при этом я должен видять только обложку, наименование, описание, к каким категориям относится, дату создания, количество коментариев. Собсно почти все за исключением массивного поля текста публикации. И вот ещё важный момент. Мне нужно получить количество коментариев, а не колекцию этих коментариев. Так бы я через связки получил колекцию и узна size(), но нахрена козе баян? Нахрена лишние обьекты ради сайза? Нахрена мне текст публикации, если его я не должен видять в списке моих публикаций, а он порядком места будет занимать до 200 000 символов. Так вот тянуть весь этот обьем из БД в память как бы не рационально и не оправдывает это простоту написания кода. Надо чтото усложнить в коде, но меньше грузить память и БД. Вот и думаю делать простые модельки для каждого случая, но не замапленные на таблички. В них выбирать запросом нужное. Как такая мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:19:38 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
чтобы узнать size у коллекции совсем не обязательно тянуть всю коллекцию, причем это в хибернейте с самого начала. int count = select * from Comments c where c.user.id = : userId ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:28:11 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
Blazkowicz А куда она делась? Не делось, просто новый проект. Так вот почемуто сразу не сделал, а теперь вот что есть, то есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:28:21 |
|
||
|
Как получить имя пользователя не используя связку @ManyToOne
|
|||
|---|---|---|---|
|
#18+
jabКак такая мысль? ты не ответил, выше код подходит? Учти одни непреложные правила: - первична доменная модель и идти надо не от view а от текста-КОДА что я привёл выше. - именно для этого модель в БД нормализуют ДЛЯ бд, а не для удобства в JSP - чтобы не грузить, есть LAZY ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 17:30:40 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37693922&tid=2132367]: |
0ms |
get settings: |
22ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
61ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
108ms |
get tp. blocked users: |
3ms |
| others: | 368ms |
| total: | 630ms |

| 0 / 0 |
