Здравствуйте, BeerKiller, Вы писали:
....
BK>соответственно связи:
BK>PERSONS.P_ID <1---*> TAKENCARS.P_ID
BK>CARS.C_ID <1---*> TAKENCARS.C_ID
Есть два варианта:
первый — ваш подход, с использованием маппинга для таблицы связей
<hibernate-mapping>
<class name="Person" table="PERSONS">
<id name="id" type="long" column="P_ID">
<generator class="sequence"/>
</id>
<property name="name" type="string" column="P_NAME"/>
<property name="age" type="int" column="P_AGE"/>
</class>
<class name="Car" table="CARS">
<id name="id" type="long" column="C_ID">
<generator class="sequence"/>
</id>
<property name="model" type="string" column="C_MODEL"/>
<property name="color" type="string" column="C_COLOR"/>
</class>
<class name="TakenCar" table="TAKENCARS">
<id name="id" type="long" column="TC_ID">
<generator class="sequence"/>
</id>
<!-- здесь и вопрос: как правильно
смапить связи и нужно ли вставлять
в этот класс свойства для полей
P_ID и C_ID таблицы TAKENCARS ? -->
<many-to-one name="person" class="Person" column="P_ID"/>
<many-to-one name="car" class="Car" column="C_ID"/>
</class>
</hibernate-mapping>
второй — с использованием маппинга многие ко многим. В TAKENCARS нужно будет удалить колонку
с первичным ключем, и в каждый из классов Car и Person добавить коллекцию элементов:
<hibernate-mapping>
<class name="Person" table="PERSONS">
<id name="id" type="long" column="P_ID">
<generator class="sequence"/>
</id>
<property name="name" type="string" column="P_NAME"/>
<property name="age" type="int" column="P_AGE"/>
<set name="cars" table="TAKENCARS" cascade="all">
<key column="P_ID"/>
<many-to-many column="C_ID" class="Car"/>
</set>
</class>
<class name="Car" table="CARS">
<id name="id" type="long" column="C_ID">
<generator class="sequence"/>
</id>
<property name="model" type="string" column="C_MODEL"/>
<property name="color" type="string" column="C_COLOR"/>
<set name="persons" table="TAKENCARS" inverse="true" cascade="all">
<key column="C_ID"/>
<many-to-many column="P_ID" class="Person"/>
</set>
</class>
</hibernate-mapping>
Второй вариант посложнее, но пожалуй более ближе к объектной модели.