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

Код: 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
Hibenate маппинг наследования
    #38253115
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, что когда я в таблице tbl_Administrators переименовал поле administrator_id на user_id , и в маппинге выбрал вариант с user_id, то всё заработало...

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


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