
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.08.2013, 18:41:13
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
у меня есть объект кандидат. У него имеется имя, фамилия, возраст, список вакансий. У меня есть форма на страничке. На ней есть возможность менять имя фамилию и возраст(но не список вакансий). Благодаря возможностям спринга я могу получить частично заполненный объект кандидата(без списка вакансий). теперь я хочу сохранить изменения в БД. Мне надо заново грузить из базы вакансии, руками их приаттачивать к кандидату, и только потом сохранять кандидата? или есть какой-то более элегантный способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 18:57:03
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
redwhite90, не надо, просто сохрани и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:08:33
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
забыл ник, просто сохраняю и вакансии стираются в базе данных! это я проверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:09:08
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
точнее update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:10:10
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
redwhite90, я могу помедитировать, но я думаю гораздо быстрее получится решить проблему имея код, солидарен? Ты айдишки не перетираешь случаем? или в коллекцию нулл не пихаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:13:07
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
redwhite90точнее update Как коллекция замаплена? Что показывает хибернейт лог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:14:33
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
забыл ник, Уже вроде не первый месяц тут. Пора привыкать что если хочешь чтобы тебе помогли - надо задавать конкретные вопросы, приводить лог и обьяснять что не понятно. А философия тут мало кому интересна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:15:07
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:16:58
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:17:40
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:28:46
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
точнее лог такой: Код: java 1. 2. 3. без delete всё классно было бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:31:22
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
Вот это не смущает - private Set<Vacancy> vacancies = new HashSet<Vacancy>(); private Set<Skill> skills = new HashSet<Skill>(); ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:39:41
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
забыл ник, осталось с самого начала, чтобы хоть как-то работало. убрал new - конкретно на расссатриваему тему это никак не влияет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 19:44:33
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
Мне кажется ты что-то не договариваешь. Смотри если оставить так - private Set<Vacancy> vacancies = new HashSet<Vacancy>(); private Set<Skill> skills = new HashSet<Skill>(); то каждый раз когда хибер будет создавать экземпляр твоей сущности будет вызываться этот код, и грубо говоря хибер будет считать что это новое значение - поэтому при апдейте он будет удалять все старые. Если сделать так - private Set<Vacancy> vacancies ; private Set<Skill> skills; public void addVacancy(Vacancy v){ if (vacancies == null) { vacancies = new ... } vacancies.add(v); } то по идее все будет ок, остальные методы по аналогии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 20:03:34
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
забыл ник, Спасибо - верно. Я в одном месте пытался увидеть то, что должно быть в другом месте. хотя, если честно не очень классно, что придется из-за этого теперь везде переписывать добавление в список и добавлять через объемлющий класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 20:06:46
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
начинаю задумываться.... а ведь у меня eager инициализация. почему при сохранении конструктор вызывается, а инициализация - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 20:26:01
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
Тот же самый принцип, но обнуляем коллекциии в самом методе, если знаем, что они не должны обновляться: Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 22:02:06
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
ivanra, а не могли бы пояснить причину работоспособности вашего примера исходя из жизненного цикла hibernate ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 22:14:20
|
|||
|---|---|---|---|
Вопрос по хибернейту |
|||
|
#18+
redwhite90ivanra, а не могли бы пояснить причину работоспособности вашего примера исходя из жизненного цикла hibernate ? так принцип тот же, если хибер в коллекции нулл и маппинг лейзи он просто не будет удалять все, считая что они не подгружены. Хотя это конечно больше похоже на воркэраунд, чем на решение, но если все в тиме понимают это - то почему нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 22:46:57
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
забыл никredwhite90ivanra, а не могли бы пояснить причину работоспособности вашего примера исходя из жизненного цикла hibernate ? так принцип тот же, если хибер в коллекции нулл и маппинг лейзи он просто не будет удалять все, считая что они не подгружены. Хотя это конечно больше похоже на воркэраунд, чем на решение, но если все в тиме понимают это - то почему нет авторFetchType.EAGER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 22:50:51
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
забыл ник, авторто каждый раз когда хибер будет создавать экземпляр твоей сущности будет вызываться этот код, и грубо говоря хибер будет считать что это новое значение - поэтому при апдейте он будет удалять все старые. а когда хибер будет создавать экземпляр моей сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2013, 23:55:09
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
На самом деле, обнуление коллекции - это скорее чит. А вот в методе saveCandidate заложена бомба замедленного действия. Предлагаю подумать, что будет, если: - в Candidate добавят новое поле, а на форму забудут - допустим, доступ к записям из таблицы Candidate разделен по пользователям/ролям. Сможет ли технически подкованный пользователь изменить данные в записи, к которой у него нет доступа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 02:14:06
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
Правильный способ объявить коллекцию LAZY и не грузить ее если не требуется. В этом случае можно оставить инициализацию полей пустыми коллекциями - они будут использоваться только для новых обьектов, в загруженные из базы Hibernate подставит свои прокси. Меньше гемороя с проверками на null. Если нужно модифицировать дочерние коллекции, то загружать обьекты через fetch join или принудительно инициализировать их в DAO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 11:05:21
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
пролетевший, согласен, просто изначально было решено сделать "попроще", и теперь уже много наверное переделывать придётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2013, 11:06:54
|
|||
|---|---|---|---|
|
|||
Вопрос по хибернейту |
|||
|
#18+
ivanraНа самом деле, обнуление коллекции - это скорее чит. А вот в методе saveCandidate заложена бомба замедленного действия. Предлагаю подумать, что будет, если: - в Candidate добавят новое поле, а на форму забудут - допустим, доступ к записям из таблицы Candidate разделен по пользователям/ролям. Сможет ли технически подкованный пользователь изменить данные в записи, к которой у него нет доступа? 1 - значение просто нельзя поменять будет. хуже будет если начнут переименовывать 2- если не методом гет, то наверное всё хорошо будет! а так да - спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=OldStav&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
20ms |
get forum list: |
32ms |
get settings: |
22ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
62ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
103ms |
get tp. blocked users: |
2ms |
| others: | 674ms |
| total: | 980ms |

| 0 / 0 |
