|
|
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Есть две сущности Например Employer и Phone (пример из Pro JPA 2). Employee 1 ------------> * Phone Employe знает про Phone, а Phone про Employe не знает. Что это собственно значит в понятиях классов? Что в классе Employee есть List<Phone> phone но в классе Phone нет поля Employee? Цитата "There is no join column to store the association back from Phone to Employee. Therefore, we have used a join table to associate the Phone entity with the Employee entity." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 23:23:48 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
oson, да, для соединения используется еще одна таблица, поэтому в классе телефона не нужно поле сотрудник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 23:39:16 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Ok, спасибо. такой нюанс. А зачем вообще делать таким образом однонаправленную связь - не то же самое получиться, если например сделать обычный мэппинг с @OneToMany(mappedBy = "employee"), то есть у Phone будет поле employee, но просто оставить его приватным, то есть никаких setEmploye()/getEmployee(). Разве не то же самое получиться? В чем будет отличие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 23:50:31 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
oson, ну во первых, обычный мэппинг, как вы его называете:@OneToMany(mappedBy = "employee") не такой уж и обычный. Это скорее отсутствие мэппинга. Хибернейт не понимает двунаправленных связей. mappedBy это указание, чтобы он не создавал вторую связь Employe-Phone. Потому что она уже замаплена в Phone. Если вам нужны телефоны в классе сотрудника, но не нужна ссылка на сотрудника в классе телефон, то в телефоне просто ничего не указывайте про связь с сотрудником, а в сотруднике сделайте так: Код: java 1. 2. При этом хибер в таблице телефона создаст колонку emp_id, которая будет использоваться для связи с сотрудником, дополнительную таблицу для связи создавать не будет, и доступа из класса телефона к этому полю тоже не будет. Если я правильно понял, это то что вам надо. Я далеко не гуру Хибернейта, поэтому на истину в последней инстанции не претендую. Есть хороший туториал индуса на ломаном английском, но от этого не менне ценный. Очень рекомендую. http://www.youtube.com/watch?v=Yv2xctJxE-w&list=PL4AFF701184976B25&feature=plpp_play_all ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 00:20:05 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckeroson, ну во первых, обычный мэппинг, как вы его называете:@OneToMany(mappedBy = "employee") не такой уж и обычный. Это скорее отсутствие мэппинга. Хибернейт не понимает двунаправленных связей. mappedBy это указание, чтобы он не создавал вторую связь Employe-Phone. Потому что она уже замаплена в Phone. Если вам нужны телефоны в классе сотрудника, но не нужна ссылка на сотрудника в классе телефон, то в телефоне просто ничего не указывайте про связь с сотрудником, а в сотруднике сделайте так: Код: java 1. 2. При этом хибер в таблице телефона создаст колонку emp_id, которая будет использоваться для связи с сотрудником, дополнительную таблицу для связи создавать не будет, и доступа из класса телефона к этому полю тоже не будет. Если я правильно понял, это то что вам надо. Я далеко не гуру Хибернейта, поэтому на истину в последней инстанции не претендую. Есть хороший туториал индуса на ломаном английском, но от этого не менне ценный. Очень рекомендую. http://www.youtube.com/watch?v=Yv2xctJxE-w&list=PL4AFF701184976B25&feature=plpp_play_all ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 00:27:23 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
osonEmployee 1 ------------> * Phone такая связь обозначает подчинённую таблицу с телефонами с каскадным удалением оных при удалении сотрудника (обычно по смыслу и БЛ) Код: java 1. 2. 3. 4. 5. 6. 7. в РСУБД Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. т.е. конечная цель маппинга - получить или "договориться" с РСУБД на такие таблицы с данными и связями\действиями (как каскад) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 10:13:41 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, ТС хотел чтобы phone не знал об employe, поэтому @ManyToOne не надо, ну и mappedBy соответственно тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 10:38:53 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, ТС хотел чтобы phone не знал об employe, поэтому @ManyToOne не надо, ну и mappedBy соответственно тоже. мне интересен этот вариант. Он жизненнен вообще? Распиши классы и, главное! - SQL DDL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 10:49:51 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, классы: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. DDL: book id (PK) comment id (PK) book_id (FK->book.id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:15:56 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123Он жизненнен вообще?да, с небольшими поправками ) redhat, например, не рекомендует jpa1, например, такое не рекомендует мир делится в этом смысле на две части - первая не рекомендует, вторая недоумевает, почему первая не рекомендует ps я во второй ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:23:59 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapecker, вот смотри какая штука. Твой вариант, действительно есть в маппинге и жизни (их всего 2). Но, ситуация кардинально меняется отношением к таблице Комментарии (Телефоны). Она из подчинённой, удаляемой по каскаду вместе с сотрудником, стала главной и неудаляемой. А книжка или сотрудник стали справочной таблицей к этой по FK. Это кардинальное различие в двух маппингах и моделях жизненных ситуаций. По ТС я вижу, что телефоны надо удалять, значит каскад, значит IMHO мой вариант выше. ЗЫ. В access субд )))) есть понятие подчинённая таблица с каскадом и справочная с FK. В других СУБД по другому называется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:36:21 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
grasoff.net, я считаю, что РСУБД главнее хибера)) Поэтому я вообще тут отдельно))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:38:04 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
grasoff.net, ну вообще такая связь, когда коммент однозначно имеет смысл только для какой-то одной книги и без нее существовать не может, или аналогично с сотрудниками - телефонами, проще реализуется коллекцией. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:38:08 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, ну тут каскад никто не мешает поставить Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:40:51 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckerкогда коммент однозначно имеет смысл только для какой-то одной книгиэто 1 к 1 и оффтоп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:41:56 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, ну тут каскад никто не мешает поставить Код: java 1. 2. 3. тогда не понял разницы, если DDL твой и мой одинаков. Кстати, проверь - работает каскад? Я про то что есть 2 варианта бизнес-логики и маппинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:43:37 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, это 1 к 1 и оффтоп Не один к одному, а один ко многим. Одна книга - много коментов. Но каждый комент имеет смысл только для одной книги, его нельзя присобачить к другой и он не может существовать отдельно от книги. Тогда нужно использовать коллецию элементов и не делать комент самостоятельной сущностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 11:53:27 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, это 1 к 1 и оффтоп Не один к одному, а один ко многим. Одна книга - много коментов. Но каждый комент имеет смысл только для одной книги, его нельзя присобачить к другой и он не может существовать отдельно от книги. Тогда нужно использовать коллецию элементов и не делать комент самостоятельной сущностью. хорошо бы привести DDL но мы утонем в данном случае. Часто для телефона удобнее именно сущность и отдельная таблица. Поэтому IMHO Embedded лучше не рассматривать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 12:03:39 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, мы запутались в терминологии. Щас перефразирую. Если использовать для телефонов коллекцию эмбед элементов, то с точки зрения приложения это все равно сущность - такой же класс как и был. С точки зрения базы - это отдельная таблица, не имеющая в общем случае суррогатного первичного ключа и имеющая фк на сотрудника. То есть хибер не позволит выбрать из базы телефоны и сохранить их туда отдельно. Только вместе с сотрудником, которому они принадлежат. Таким образом, весь жизненный цикл телефона полностью контролирует сотрудник. Удаляем сотрудника - удаляются телефоны. Никаких каскадов руками писать не нужно, никакие другие классы не могут иметь ссылку на телефон. Думаю, что это правильно. Щас поэкскрементирую и выложу результаты каскада и ддл для всего этого добра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 12:36:48 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapecker, ок. Только давай тогда 3 варианта и так как выложил я (классы-dll-пример заполнения БД - хинт таблица для форума) 1. Мой вариант (главная-Сотрудник с каскадом) 2. вариант СПРАВОЧНИК (главная табла -Телефонный справочник без удаления). FK только для целостности и допускаются висящие телефоны без сотрудников. 3. Embedded Это разные варианты именно по бизнесу от БА ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 12:49:23 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, что это? хинт таблица для форума ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 12:52:20 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapecker, HTML табличка с примерами данныз в БД для ТС женского пола)) типа такой Заголовок#IDjavapecker ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:01:58 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapecker, У меня просто скрин был. Поэтому я привёл скрин. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:05:54 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
Petro123, вариант СПРАВОЧНИК (главная табла -Телефонный справочник без удаления). FK только для целостности и допускаются висящие телефоны без сотрудников. Я не понимаю зачем так извращен этот вариант. Он от первого ничем не отличается, кроме того, что телефон не знает ничего о сотруднике. Висячие телефоны прекрасно работают и в первом варианте и в этом. Каскад работает как в первом так и во втором варианте. Не понимаю почему вдруг таблица телефонов стала главной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:29:21 |
|
||
|
Мэппинг для однонаправленной связи
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, вариант СПРАВОЧНИК (главная табла -Телефонный справочник без удаления). FK только для целостности и допускаются висящие телефоны без сотрудников. Я не понимаю зачем так извращен этот вариант. Он от первого ничем не отличается, кроме того, что телефон не знает ничего о сотруднике. Висячие телефоны прекрасно работают и в первом варианте и в этом. Каскад работает как в первом так и во втором варианте. Не понимаю почему вдруг таблица телефонов стала главной. висячие телефоны в первом варианте НЕ допускаются, т.к. ОНИ НЕ НУЖНЫ БИЗНЕСУ. Это не справочник городов или улиц. Нафига иметь телефонный номер в БД без сотрудника? Т.е. ничей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:50:06 |
|
||
|
|

start [/forum/search_topic.php?author=mboarder&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
14ms |
get forum list: |
22ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 706ms |
| total: | 905ms |

| 0 / 0 |
