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

Код: 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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans  PUBLIC  "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <!-- Hibernate -->
    <bean id="dataSource"  class ="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>org.firebirdsql.jdbc.FBDriver</value></property>
        <property name="url"><value>jdbc:firebirdsql:localhost:c:/temp/mybase.fdb</value></property>
        <property name="username"><value>SYSDBA</value></property>
        <property name="password"><value>masterkey</value></property>
    </bean>


    <bean id="sessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"><ref local="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <value>resource/User.hbm.xml</value>
                <value>resource/Vote.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.FirebirdDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
            <prop key="hibernate.show_sql">false</prop>
        </props>
        </property>
    </bean>



    <bean id="transactionManager"  class ="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>

    <bean id="transactionAttributes"
           class ="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
        <property name="properties">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>

    </bean>

    <bean id="nameMatchTxInterceptor"  class ="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager"><ref bean="transactionManager"/></property>
        <property name="transactionAttributeSource"><ref bean="transactionAttributes"/></property>
    </bean>



    <!-- Add DAO Object here -->
    <bean id="userDAO"  class ="com.mypackage.dao.impl.IUserDAOImpl">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>

    <bean id="voteDAO"  class ="com.mypackage.dao.impl.IVoteDAOImpl">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>


    <!-- Add Managers here -->
    <bean id="userManager"  class ="com.mypackage.services.impl.UserManagerImpl">
        <property name="userDAO">
            <ref local="userDAO"/>
        </property>
    </bean>

    <!-- other beans -->
</beans>


Код: 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.
public class Test {
    public static ApplicationContext ctx;

    public static void main( String[] args){
        System.out.println( "try to load context");
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println( "try to get bean");
        IUserManager manager = (IUserManager) ctx.getBean("userManager");
        
        System.out.println( "create user");
        User user = new User();
        user.setUsrName("user num 1");
        user.setUsrFio("developer");
        System.out.println( "try to save user");

        Vote vote = new Vote();
        vote.setTitle( "First Title");
        vote.setQuestion( "the first question//");

        Vote vote1 = new Vote();
        vote1.setTitle( "Second title");
        vote1.setQuestion( "Scond title");

        Set set = new HashSet();
        set.add( vote);
        set.add( vote1);

        user.setVotes( set);
        manager.appendUser( user);


    }
}

сохраняет только пользователя а связанные данные игнорирует.
-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34851939
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замаплены то они
Код: plaintext
1.
2.
<value>resource/User.hbm.xml</value>
<value>resource/Vote.hbm.xml</value>
как?
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34851940
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и тесты полезно от AbstractTransactionalSpringContextTests наследовать
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34851963
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping  PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    < class  name="com.mypackage.domain.User" table="USER_TBL">
        <id name="usrId" column="USER_ID">
            <generator  class ="native"/>
        </id>
        <property name="usrLogin"  type="string" length="25" column="USER_LOGIN"/>        
        <property name="usrName"  type="string" length="25" column="USER_NAME"/>
        <property name="usrFio" type="string" length="25" column="USER_FIO"/>
        <property name="password" type="string" length="25" column="USER_PASSWORD"/>
        <property name="admin" type="boolean" column="USER_ADMIN"/>
        <property name="usrAge" type="integer"  column="USER_AGE"/>

        <set name="votes" inverse="true" outer-join="auto" >
            <key column="VOITING_ID" />
            <one-to-many  class ="com.mypackage.domain.Vote"/>
        </set>

    </ 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.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping  PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    < class  name="com.mypackage.domain.Vote" table="VOTING_TBL">
        <id name="id" column="VOITING_ID">
            <generator  class ="native"/>
        </id>
        <property name="title"  type="string" length="255" column="TITLE"/>
        <property name="question" type="string" length="255" column="QUESTION"/>
        <property name="previewCount" type="integer" column="PREVIEW_COUNT"/>
        <property name="answerCount" type="integer" column="ANSWER_COUNT"/>

        <many-to-one name="user" column="USER_ID" outer-join="auto"
                      class ="com.mypackage.domain.User" />

    </ class >

</hibernate-mapping>


-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34851964
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalexakaДа и тесты полезно от AbstractTransactionalSpringContextTests наследовать
спасибо за совет
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34851999
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
<set name="votes" inverse="true" outer-join="auto" cascade="all">
            <key column="VOITING_ID" />
            <one-to-many class="com.mypackage.domain.Vote"/>
</set>

all конечно может быть многовато, почитайте доку
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34852150
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 zalexara попробывал ваш вариант, не помогло выдает ошибку ,
так же попробывал save-update из документации таже самая ошибка
если судить по тексту ошибки то нет внешнего ключа, но в примере к хибернейту не создается внешний ключ .. ладно пойду спать а то уже поздно может завтра кто нибудь подскажет...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception.  335544466 . violation of FOREIGN KEY constraint "FK8682D8868AACEC90" on table "VOTING_TBL"
Foreign key reference target does not exist
	at org.firebirdsql.jdbc.AbstractPreparedStatement.internalExecute(AbstractPreparedStatement.java: 711 )
	at org.firebirdsql.jdbc.AbstractPreparedStatement.executeUpdate(AbstractPreparedStatement.java: 171 )
	at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java: 23 )
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java: 2120 )
	...  19  more

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34852215
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажите хиберу:
Код: plaintext
hibernate.show_sql=true

настройте логгер:
Код: plaintext
1.
log4j.logger.org.hibernate.type=DEBUG
log4j.logger.org.hibernate.SQL=DEBUG

потом смотрите что и куда он инсертит и какие значения сетит в параметры
зы
а если так?
Код: plaintext
1.
2.
<many-to-one name="user" column="USER_ID" outer-join="auto"
not-null="true" unique="true" update="false" class="com.mypackage.domain.User" />
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34852216
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри unique="true" ф топку
зы
ночь однака :))
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34855315
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перепробывал все варианты которые предложили.. успеха не добился , буду благодарен за любую помощь ..
при попытке выполнить получаю следующую ошибку :
Код: 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.
Hibernate: select gen_id( hibernate_sequence,  1  ) from RDB$DATABASE
Hibernate: select gen_id( hibernate_sequence,  1  ) from RDB$DATABASE
Hibernate: select gen_id( hibernate_sequence,  1  ) from RDB$DATABASE
Hibernate: insert into USER_TBL (USER_LOGIN, USER_NAME, USER_FIO, USER_PASSWORD, USER_ADMIN, USER_AGE, USER_ID) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into VOTING_TBL (TITLE, QUESTION, PREVIEW_COUNT, ANSWER_COUNT, USER_ID, VOITING_ID) values (?, ?, ?, ?, ?, ?)
Exception in thread "main" org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: could not insert: [com.mypackage.domain.Vote]
Caused by: org.hibernate.exception.GenericJDBCException: could not insert: [com.mypackage.domain.Vote]
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java: 103 )
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java: 91 )
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java: 43 )
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java: 2140 )
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java: 2503 )
	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: 51 )
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java: 248 )
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java: 232 )
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java: 139 )
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java: 297 )
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java: 27 )
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java: 993 )
	at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java: 388 )
	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 363 )
	at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java: 622 )
	at com.mypackage.dao.impl.IUserDAOImpl.saveUser(IUserDAOImpl.java: 19 )
	at com.mypackage.services.impl.UserManagerImpl.appendUser(UserManagerImpl.java: 25 )
	at Test.main(Test.java: 45 )
	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 )
Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception.  335544466 . violation of FOREIGN KEY constraint "FK8682D8868AACEC90" on table "VOTING_TBL"
Foreign key reference target does not exist
	at org.firebirdsql.jdbc.AbstractPreparedStatement.internalExecute(AbstractPreparedStatement.java: 711 )
	at org.firebirdsql.jdbc.AbstractPreparedStatement.executeUpdate(AbstractPreparedStatement.java: 171 )
	at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java: 23 )
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java: 2120 )
	...  19  more

-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34856953
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
включи логирование org.hibernate.type увидишь значения вопросиков

похоже что или акойто косяк с подстановкой USER_ID
или на этом поле стоит ограничение уникальности.

отскрипти "FK8682D8868AACEC90" on table "VOTING_TBL" чтоб посмотреть чего там за констрэйнт
...
Рейтинг: 0 / 0
hibernate: one-to-many
    #34861543
Фотография -Sergey-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался наконец, выкладываю готовую часть может кому пригодится..

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping  PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    < class  name="com.enetcyberserver.domain.Test1" table="Test1">
        <id name="id" column="TEST1_ID">
            <generator  class ="native"/>
        </id>
        <property name="title" type="string" column="TITLE"/>

        <set name="other"  inverse="true" outer-join="auto" cascade="all">
            <key column="TEST2_ID" />
            <one-to-many  class ="com.enetcyberserver.domain.Test2"/>
        </set>
    </ class >

</hibernate-mapping>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.enetcyberserver.domain.Test2" table="Test2">
        <id name="id" column="TEST2_ID">
            <generator class="native"/>
        </id>
        <property name="title" type="string" column="TITLE"/>

        <many-to-one name="other" column="OTHER" outer-join="auto"
                     class="com.enetcyberserver.domain.Test2" />

    </class>

</hibernate-mapping>

И совет обязательно проверять constraint-ы кторые создает хибернейт. он их не всегда удаляет
-

Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate: one-to-many
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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