Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> many-to-many Hibernate, сохранение формы Spring + Hibernate 
:(
    Опции темы
Altern
Дата 5.5.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



Всем привет.

Есть проблема связанная со Spring + Hibernate. Наверняка кто-то сталкивался с ней.

Есть many-to-many связь между двумя таблицами: User и соответственно Restriction. Из формы редактирования Restriction с мультиселектом юзеров всё отлично сохраняется. А вот наоборот - никак. То есть из формы редактирования User с мультиселектом рестрикшнов не сохраняется ничего. Exception такой:

Код

org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.cgu.searcher.bean.Restriction.id


Many-to-many прописана в конфигурационных файлах хибернейта так:

---Restriction.hbm.xml ---

Код

<hibernate-mapping>
    <class table="RESTRICTION" name="com.cgu.searcher.bean.Restriction">
        <id access="field" name="id">
            <generator class="native"/>
        </id>
        ...
        <set name="users" table="USER_IN_RESTRICTION" cascade="save-update" lazy="true">
            <key column="RESTRICTION_ID"/>
            <many-to-many column="USER_ID"
                class="com.cgu.searcher.bean.User"/>
        </set>
        ...
    </class>
</hibernate-mapping>


---User.hbm.xml ---

Код

<hibernate-mapping>
    <class table="USER" name="com.cgu.searcher.bean.User">
        <id access="field" name="id">
            <generator class="native"/>
        </id>
        ...
        <set name="restrictions" table="USER_IN_RESTRICTION" cascade="save-update" inverse="true" lazy="true">
            <key column="USER_ID"/>
            <many-to-many column="RESTRICTION_ID"
                class="com.cgu.searcher.bean.Restriction"/>
        </set>
        ...
    </class>
</hibernate-mapping>


Бины такие:

User:

Код

public class User extends BaseEntity {
    ...

    private Set<Restriction> restrictions;

    ...
 
    public Set<Restriction> getRestrictions() {
        return this.restrictions;
    }

    public void setRestrictions(Set<Restriction> restrictions) {
        this.restrictions = restrictions;
    }

    ...

}


Restriction:

Код

public class Restriction extends BaseEntity {
    
    ...
    
    private Set<User> users;
    
    ...

    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }

    ...
}


BaseEntity:

Код

public class BaseEntity {

    private Integer id;

    public BaseEntity() {
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer integer) {
        id = integer;
    }
}



Что неправильно? Заранее спасибо
PM MAIL   Вверх
Kangaroo
Дата 5.5.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Может все из-за этого:
Цитата(Altern @  5.5.2008,  23:07 Найти цитируемый пост)
inverse="true"


Хотя ошибка левая какая-то..

Почитай тут про инверс=тру


--------------------
Lost....
PM MAIL MSN   Вверх
Altern
Дата 6.5.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



без inverse тоже не работает
PM MAIL   Вверх
Altern
Дата 6.5.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



проблема решена

Загвоздка была в способе сохранения entity. Раньше было:

Код

getHibernateTemplate().merge(entity);


стало:

Код

 getSession().flush();
 getSession().saveOrUpdate(entity);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1165 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.