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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> null'ы в коллекции (Hibernate), null'ы в коллекциях после сохранения 
:(
    Опции темы
Stifler
Дата 3.3.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Использую Hibernate (3.2.4), СУБД PostgreSQL (8.2)
Через Hibernate замэпил 2 класса (Tutor и Load):

Код

public abstract class Model 
    
    private long id;
    
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Model model = (Model) o;
        return id == model.id;
    }

    public int hashCode() {
        return (int)id;
    }

    //геттеры и сеттеры
}

public class Tutor extends Model {

    private List<Load> loads;
    //геттеры и сеттеры
}

public class Load extends Model {
    
    private Tutor tutor;
    //геттеры и сеттеры
}



Собственно, сам мэппинг:
Код

<hibernate-mapping>
    <class name="model.Load" table="Loads">
        <id column="id" type="long" name="id">
           <generator class="native"/>
        </id>
        
        <many-to-one 
            column="tutorId" 
            name="tutor" 
                 class="model.Tutor" 
                 not-null="true" 
                 cascade="save-update"
                 lazy="false" />
   
    </class>
</hibernate-mapping>

<hibernate-mapping>
    <class name="model.Tutor" table="Tutors">
        <id column="id" type="long" name="id">
           <generator class="native"/>
        </id>
        
        <list name="loads" table="Loads" cascade="all" lazy="false" inverse="true">
            <key column="tutorId" />
            <index column="id" />
            <one-to-many class="model.Load" />
        </list>
    </class>
</hibernate-mapping>


Получилась bidirectional association для one-to-many.

Когда, имея экземпляр Tutor'а, сохраняю Load и потом смотрю, что получилось в Tutor'е:
Код

log.info(tutor.getLoads()); // выводит []

Load load = new Load();
load.setTutor(tutor);
tutor.getLoads().add(load);

...session.save(load);

log.info(tutor.getLoads()); //выводит страшное:  [null, null, null, null, null, null, null, null, null, null, null, Load@бла-бла]


Откуда берутся злосчастные null'ы не понимаю. Примечательно, что количество null'ов равно значению счётчика БД для ID'шника Load. 
Т.е. если load сохранился в БД под ID 10, то в коллекции будет 10 null'ов, а потом нужная load.

Не исключаю, что где-то банальная ошибка или просто недостаток знаний, но верно работать программу я так и не заставил.
Буду благодарен за любые замечания и советы.
PM   Вверх
Shklyar
Дата 3.3.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Убрал, ошибся.

Добавлено @ 23:23
А писать такое нужно в J2EE (думаю, что там больше с Hibernate знакомы).

Это сообщение отредактировал(а) Shklyar - 3.3.2009, 23:50
--------------------
https://www.youtube.com/watch?v=JZN8Xaebs_U
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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