powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Разборки с hibernate - many-to-one
11 сообщений из 11, страница 1 из 1
Разборки с hibernate - many-to-one
    #34288016
Пытаюсь сделать простой мапинг many-to-one, а не получается. Вроде все делаю по их референсу.
Две таблицы, адрес и улица, на одной улице много адресов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE `address` (
  `addressID` int( 11 ) NOT NULL auto_increment,
  `streetID` int( 11 ) NOT NULL,
  `addressHouse` int( 11 ) NOT NULL,
  `addressApart` int( 11 ) NOT NULL,
  PRIMARY KEY  (`addressID`),
  KEY `streetID` (`streetID`),
  CONSTRAINT `address_fk` FOREIGN KEY (`streetID`) REFERENCES `street` (`streetID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE `street` (
  `streetID` int( 11 ) NOT NULL auto_increment,
  `streetPrefix` varchar( 20 ) NOT NULL,
  `streetName` varchar( 40 ) NOT NULL,
  PRIMARY KEY  (`streetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public   class  Address {

     private   Long  addressID;

     private   Long  streetID;

     private   int  addressHouse;

     private   int  addressApart;

     private  Street parentStreet;
    // гетеры сетеры далее

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public   class  Street {

     private   Long  streetID;

     private  String streetPrefix;

     private  String streetName;

     private  Set<Address> addresses;
    // гетеры сетеры далее

Код: plaintext
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<hibernate-mapping
>
    < class 
        name="beans.entity.Address"
        table="address"
    >

        <id
            name="addressID"
            column="addressID"
            type="java.lang.Long"
        >
            <generator  class ="native">
           
            </generator>
        </id>

        <property
            name="streetID"
            type="java.lang.Long"
            update="true"
            insert="true"
            column="streetID"
            not- null ="true"
        />

        <property
            name="addressHouse"
            type="int"
            update="true"
            insert="true"
            column="addressHouse"
            not- null ="true"
        />

        <property
            name="addressApart"
            type="int"
            update="true"
            insert="true"
            column="addressApart"
            not- null ="true"
        />

       пробую делать так, но выдает ошибку
        <!--<many-to-one-->
            <!--name="parentStreet"-->
            <!-- class ="beans.entity.Street"-->
            <!--column="streetID"-->
        <!--/>-->


    </ class >

</hibernate-mapping>

Код: plaintext
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<hibernate-mapping>
    < class 
        name="beans.entity.Street"
        table="street"
    >

        <id
            name="streetID"
            column="streetID"
            type="java.lang.Long"
        >
            <generator  class ="native">
              <!--  
                  To add non XDoclet generator parameters, create a file named 
                  hibernate-generator-params-Street.xml 
                  containing the additional parameters and place it in your merge dir. 
              --> 
            </generator>
        </id>

        <property
            name="streetPrefix"
            type="java.lang.String"
            update="true"
            insert="true"
            column="streetPrefix"
            not- null ="true"
        />

        <property
            name="streetName"
            type="java.lang.String"
            update="true"
            insert="true"
            column="streetName"
            not- null ="true"
        />

        <set
            name="addresses"
            lazy="false"
            cascade="none"
            sort="unsorted"
        >

            <key
                column="streetID"
            >
            </key>

            <one-to-many
                   class ="beans.entity.Address"
            />

        </set>
     

    </ class >

</hibernate-mapping>

insert в обе таблицы работают, one-to-many используя Set тоже работает, а вот many-to-one ни в какую.
Если раскоментировать тот мапинг, то выдает вот такую ошибку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.CollectionSecondPass - Mapped collection key: streetID, one-to-many: beans.entity.Address
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.Configuration - processing  native  query and ResultSetMapping mappings
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.Configuration - processing association property references
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.Configuration - resolving reference to  class : beans.entity.Street
Exception in thread "main" java.lang.NoClassDefFoundError
	at db.managers.StreetManager.getStreet(StreetManager.java: 58 )
	at Main.main(Main.java: 43 )
	at sun.reflect.NativeMethodAccessorImpl.invoke0( Native  Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
	at java.lang.reflect.Method.invoke(Method.java: 585 )
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java: 90 )

Замучался, помогите пожалуйста.
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34288038
Javakka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, проблема в том, что для двусторонних отношений надо один конец указывать с параметром inverse="true"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
< class  name="Parent">
    <id name="id" column="parent_id"/>
    ....
    <set name="children" inverse="true">
        <key column="parent_id"/>
        <one-to-many  class ="Child"/>
    </set>
</ class >

< class  name="Child">
    <id name="id" column="child_id"/>
    ....
    <many-to-one name="parent" 
         class ="Parent" 
        column="parent_id"
        not- null ="true"/>
</ class >
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34288045
читал, пробовал, не спасает
пробовал коментировать мапинг one-to-many, не спасает =((
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34288673
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, в стэктрэйсе однако большая сила
Код: plaintext
1.
 14 : 29 : 12 , 031  DEBUG org.hibernate.cfg.Configuration - resolving reference to  class : beans.entity.Street
Exception in thread "main" java.lang.NoClassDefFoundError
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34289180
только не понятно какой класс не может найти.
beans.entity.Street ?
вроде всё правильно, вот к нему такой же путь в мапинге, который работает
Код: plaintext
1.
2.
3.
4.
    < class 
        name="beans.entity.Street"
        table="street"
    >
все jar-ники хибера подключены ...
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34289514
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в classpath'e видимо отсутствует он ....
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34290177
exppв classpath'e видимо отсутствует он ....

есть он в класпасе, ведь если коментирую

Код: plaintext
1.
2.
3.
4.
5.
        <!--<many-to-one-->
            <!--name="parentStreet"-->
            <!-- class ="beans.entity.Street"-->
            <!--column="streetID"-->
        <!--/>-->

то инсерты проходят как в одну таблицу так и в другую
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34291277
any help ? :(
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34293416
понял где ошибка ...
может кому то будет интересно :
нельзя одновременно мапить в Child'e
parent_id -> Long parentID
и
many-to-one -> Parent parent
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34293608
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hibernate - many-to-oneпонял где ошибка ...
может кому то будет интересно :
нельзя одновременно мапить в Child'e
parent_id -> Long parentID
и
many-to-one -> Parent parent


На самом деле можно, если update="false" insert="false" поставить у ParentId. свойство будет только для чтения... иногда полезно :)
...
Рейтинг: 0 / 0
Разборки с hibernate - many-to-one
    #34293765
действительно, спасибо за совет
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Разборки с hibernate - many-to-one
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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