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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложный mapping подразделений на Hibernate 
:(
    Опции темы
stg_unholy
Дата 5.9.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый вечер! 

Возникла необходимость замаппить иерархию подразделений...
Основная таблица выглядит так:
Код

create table departments (
  id number(9) primary key,
  up_id number(9),
  name varchar2(255) not null,
  short_name varchar2(25) 
)

Подразделений бывает несколько типов, для некоторых из них определяются дополнительные свойства в соединенных one-to-one таблицах....
очевидно, что в качестве маппинга надо использовать table-per-subclass...
Но вот тут возникают проблемы: Например для подразделений 1 и 2 уровня вложенности дополнительных свойств нет...Классы (setter и getter убраны для удобочитабельности) аннотированы так: 
Это "основной" класс подразделений, от которого наследуются все остальные...
Код

/**
 * Abstact class "father" of all department types
 */
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "DEPARTMENTS")
public abstract class Department {

  @Id
  @Column(name = "ID")
  @SequenceGenerator(name = "DEPARTMENT_SEQUENCE", allocationSize = 1, sequenceName = "DEPARTMENTS_SEQ")
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DEPARTMENT_SEQUENCE")
  private Integer ID;

  @Column(name = "NAME")
  private String name;

  @Column(name = "SHORT_NAME")
  private String shortName;

  @ManyToOne
  @JoinColumn(name = "UP_ID", nullable = true)
  private Department parent;
}


Это класс головного офиса:

Код

@Entity
public class HeadOffice extends Department {

  @OneToMany 
  private Set<Branch> branches = new HashSet<Branch>();

  public void addBranch(Branch branch) {
    branches.add(branch);
    branch.office = this;
  }
}



Это класс филиала:
Код

@Entity
public class Branch extends Department {

  @ManyToOne
  HeadOffice office;
}


Проблема в том что при сохранении ничего не сохраняется....Выполняется только выборка след. значения из sequence....
Код


    HeadOffice o = new HeadOffice ();
    u.setName("HO");
    u.setShortName("HO");


    Branch b = new Branch();
    b.setName("branch 2");
    b.setShortName("branch 33");

    o.addBranch(b);

    session.saveOrUpdate(b);
    session.saveOrUpdate(d);    



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.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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