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

start [/forum/topic.php?fid=59&msg=38365287&tid=2128805]: |
0ms |
get settings: |
18ms |
get forum list: |
27ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
67ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
102ms |
get tp. blocked users: |
3ms |
| others: | 388ms |
| total: | 643ms |

| 0 / 0 |
