Многоуровневая таблица самообслуживания Hibernate с сопоставлением таблиц соединений - PullRequest
0 голосов
/ 09 ноября 2010

У меня спазм мозга, пытающийся выяснить это отображение.

Вот мой дб:

CUSTOMER              CUSTOMERFAMILY                CUSTOMER
PK SITE_ID -----------PRIMARYSITE_ID             -- PK SITE_ID
                      MEMBERSITE_ID -------------|

Это создает отношение, в котором у Клиента может быть только один родитель (поскольку существует уникальное ограничение на CUSTOMERFAMILY.MEMBERSITE_ID), и у Клиента может быть много детей. (то есть Pepsi Co. владеет FritoLay, Gatorade и т. д., поэтому у PepsiCo будет несколько детей, но у Gatorade есть только один родитель: PepsiCo).

Я пытаюсь отобразить свойство в моем объекте Customer, называемом parent, я безуспешно пробовал множество комбинаций этой идеи:

<join table="CUSTOMERFAMILY" inverse="false">
    <key column="MEMBERSITE_ID" unique="true" />
    <many-to-one name="parent" column="SITE_ID" not-null="true"><formula>PRIMARYSITE_ID</formula></many-to-one>
</join>

Есть идеи ??

Заранее спасибо.

(Пожалуйста, не спрашивайте, почему БД спроектирована таким образом ... устаревшая система, это был не я!))

1 Ответ

2 голосов
/ 09 ноября 2010

Предполагая, что у вас есть

private Customer parent;
private Set<Customer> children;

отображение выглядит так:

<set name = "children" table = "CUSTOMERFAMILY">            
    <key column="PRIMARYSITE_ID" />
    <many-to-many column = "MEMBERSITE_ID" entity-name="package.Customer" />
</set>

<join table="CUSTOMERFAMILY" inverse="true">
    <key column="MEMBERSITE_ID" />
    <many-to-one name="parent" column = "PRIMARYSITE_ID" />
</join>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...