Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibenate маппинг наследования / 2 сообщений из 2, страница 1 из 1
10.05.2013, 10:11:10
    #38253029
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibenate маппинг наследования
Есть класс

Код: plain
1.
2.
3.
4.
5.
User {
   id: Integer,
   firstname: String,
   middlename: String,
   lastname: String
}


и таблица
Код: plain
1.
2.
3.
4.
5.
6.
7.
tbl_Users {
   user_id: Integer,
   user_firstname: String,
   user_middlename: String,
   user_lastname: String,

   primary key(user_id) auto_increment,
}



Есть класс

Код: plain
1.
2.
3.
Administrator extends User {
   login: String,
   password: String
}


и таблица

Код: plain
1.
2.
3.
4.
5.
6.
7.
tbl_Administrators {
   administrator_id: Integer,
   administrator_login: String,
   administrator_password: String,

   primary key(administrator_id),
   foreign key(administrator_id) references tbl_Users(user_id)
}


То есть при вставке в таблицу tbl_Administrators , нужно сначала вставить запись в таблицу tbl_Users , а затем взять id из таблицы tbl_Users и вставить запись в таблицу tbl_Administrators указав в качестве administrator_id этот самый id из таблицы tbl_Users .

Такое можно замапить в Hibernate?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="ru.sql.domain.User" table="tbl_users">
        <id name="id" column="user_id">
            <generator class="identity"/>
        </id>

        <property name="firstname" column="user_firstname" type="string" not-null="true"
            insert="true"
            update="true"/>

        <property name="middlename" column="user_middlename" type="string" not-null="true"
            insert="true"
            update="true"/>

        <property name="lastname" column="user_lastname" type="string" not-null="true"
            insert="true"
            update="true"/>

        <joined-subclass name="ru.sql.domain.Administrator" extends="ru.sql.domain.User" table="tbl_administrators">
            <key column="administrator_id"/> <!-- 1 вариант -->
            <!--<key column="user_id"/>-->    <!-- 2 вариант -->

            <property name="login" column="administrator_login" type="string" not-null="true"
                insert="true"
                update="true"/>

            <property name="password" column="administrator_password" type="string" not-null="true"
                insert="true"
                update="true"/>
        </joined-subclass>
    </class>
</hibernate-mapping>



Когда использую 1 вариант , то получаю ошибку, что колонки administrator_id нет в ResultSet'е.

Когда использую 2 вариант , то получаю ошибку, что column user0_1_.user_id does not exist .
...
Рейтинг: 0 / 0
10.05.2013, 13:34:42
    #38253115
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibenate маппинг наследования
Интересно, что когда я в таблице tbl_Administrators переименовал поле administrator_id на user_id , и в маппинге выбрал вариант с user_id, то всё заработало...

Как-то можно Hibernate сказать, что мол поле administrator_id это и есть суррогатный ключ поля user_id из таблицы tbl_Users?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibenate маппинг наследования / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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