powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание мапинга Hibernate
2 сообщений из 2, страница 1 из 1
Создание мапинга Hibernate
    #32897709
Evgene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, какой маппинг связей должен быть при такой модели данных:
Код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE PermitTransaction (
       DealerFrom           NUMBER NOT  NULL ,
       DealerTo             NUMBER NOT  NULL ,
       OnPerm               NUMBER( 1 )  NULL 
       PRIMARY KEY (DealerFrom, DealerTo)
);

CREATE TABLE Dealers (
       DealerID             NUMBER NOT  NULL ,
       DealerName           VARCHAR( 200 )  NULL 
       PRIMARY KEY (DealerID)
);

ALTER TABLE PermitTransaction
       ADD  ( FOREIGN KEY (DealerTo)
                             REFERENCES Dealers ) ;


ALTER TABLE PermitTransaction
       ADD  ( FOREIGN KEY (DealerFrom)
                             REFERENCES Dealers ) ;

Озвучивается это так: у одного Dealers может быть разрешение (PermitTransaction) на связь с несколькими другими Dealers. Между двумя разными дилерами возможна только одна связь.
...
Рейтинг: 0 / 0
Создание мапинга Hibernate
    #32901326
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это классический many-to-many (я не понял что за атрибут onPerm) – то так:

[См. Hibernate 2.1.6
6.3. Collections of Values and Many-To-Many Associations]

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
< class  name="Dealers" table="Dealers">
	<id name="dealerId" type="number">
		<column name="DealerId"/>
		<generator  class ="???"/>
	</id>
	<property name="dealerName" column="DealerName" type="string"/>

	<set name="dealersTo" table="PermitTransaction" cascade="all">
		<key column="dealerFrom"/>
		<many-to-many column="dealerTo"  class ="Dealers"/>
	</set>
	<set name="dealersFrom" table="PermitTransaction" cascade="all">
		<key column="dealerTo"/>
		<many-to-many column="dealerFrom"  class ="Dealers"/>
	</set>

</ class >

Тут есть проблема – я не знаю равнозначны ли dealerTo и dealerFrom – поэтому 2 свойства.


Если же это две самостоятельные сущности (как это обычно бывает) – то
имеем 2 отношения many-to-one

[См. Hibernate 2.1.6
5.1.10 Many-To-One]

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
< class  name="PermitTransaction" table="PermitTransaction">
	<id name="???" type="number">
<!—здесь лучше бы ввести суррогатный ключ, или объявить composite id 
[См. Hibernate  2 . 1 . 6   5 . 1 . 5  composite-id] 
	</id>
	<many-to-one name="dealerTo" column="DealerTo"  class ="Dealers"/>
	<many-to-one name="dealerFrom" column="DealerFrom"  class ="Dealers"/>
	<property name="onPerm" column="OnPerm" type="string"/>
</ class >

< class  name="Dealers" table="Dealers">
	<id name="dealerId" type="number">
		<column name="DealerId"/>
		<generator  class ="???"/>
	</id>
	<property name="dealerName" column="DealerName" type="string"/>
</ class >
В этом примере предполагается, что оба отношения направленные от PermitTransaction к Dealers. Если же нужны именно двунаправленные отношения – то нужно конкретнее описать задачу.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание мапинга Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]