Как сопоставить вложенную коллекцию Map <Key, List <Values>> с аннотациями спящего режима JPA? - PullRequest
14 голосов
/ 02 июня 2009

У меня есть класс, я не уверен, как правильно комментировать.

Моя цель для Холдера :: данные:

  • Список должен поддерживать порядок не компаратором, а естественным порядком элементов в массиве. (Это может быть столбец ndx, если это полезно.)
  • Держатель будет иметь единственную ссылку на данные, так что, вероятно, Cascade all также применим.

Я также открыт для другого дизайна, который удаляет карту, если это сделало бы для более чистого дизайна.

@Entity
public class Holder extends DomainObject {
  private Map<Enum,List<Element>> data;
}

@Entity
public class Element extends DomainObject {
  private long valueId;
  private int otherData;
}

@Mappedsuperclass
public class DomainObject {
 // provides id
 // optimistic locking
 // create and update date
}

Ответы [ 3 ]

9 голосов
/ 02 июня 2009

Я не думаю, что в hibernate (-core) возможно отобразить любую коллекцию коллекций:

Коллекции могут содержать практически любые другой тип Hibernate, включая все основные типы, пользовательские типы, компоненты, и, конечно же, ссылки на другие юридические лица.

(из официальный документ )

Обратите внимание на почти и упущение типа коллекции.

Обходной путь: вам нужно ввести новый тип «между» держателем коллекции и элементом. Этот тип можно сопоставить как сущность или компонент, и он ссылается на исходное содержимое карты, в данном случае список.

Что-то вроде:

@Entity
public class Holder extends DomainObject {
  @OneToMany
  private Map<Enum,InBetween> inBetweens;
}

@Entity
public class InBetween extends DomainObject {
  @OneToMany
  private List<Element> elements;
}

@Entity
public class Element extends DomainObject {
  private long valueId;
  private int otherData;
}

@Mappedsuperclass
public class DomainObject {
 // provides id
 // optimistic locking
 // create and update date
}

Остальная часть отображения зависит от вашей конкретной ситуации, но довольно проста.

2 голосов
/ 04 июня 2009

Вот блог о коллекции коллекций в спящем режиме http://blog.xebia.com/2007/10/05/mapping-multimaps-with-hibernate/

Надеюсь, это поможет. Это помогло мне.

С уважением, Anton

0 голосов
/ 17 апреля 2010

Обратите внимание, что указанная ссылка на документацию по Hibernate выглядит устаревшей, я обнаружил следующее: http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...