Использование JPA / Hibernate Map для значений строк / столбцов - PullRequest
1 голос
/ 24 января 2012

Я использую Hibernate 3.6, но предпочитаю придерживаться аннотаций JPA, если это возможно.

У меня есть родительская сущность, которая имеет идентификатор и, возможно, другие простые свойства (имя, описание и т. Д.), Но будет иметь двумерную коллекцию дочерних элементов (в простом случае - строки).

В идеале я бы хотел, чтобы ParentEntity выглядел так:

class ParentEntity {
     @Id
     private Long id;
....
     @????
     // first Long should be column_index, second Long should be row_index
     private Map<Long,Map<Long,String>> gridOfStrings;
}

В моей базе данных мой gridOfString представлен так:

GridItems
------------
grid_id (int,FK to grid)
column_index (int)
row_index (int)
value (varchar)

У меня есть некоторая гибкость, чтобы изменить схему или способ работы объекта.

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

Альтернативный подход

Могу предположить, что у меня будет только 2 или 3 столбца, и я сделаю их отдельными Картами. Я не уверен, как настроить фильтр гибернации при каждом соединении.

Сущность может выглядеть так:

@???
//rows where column_index=1
private Map<Long,String> column1;
...
private Map<Long,String> column2;
...
private Map<Long,String> column3;

1 Ответ

0 голосов
/ 24 января 2012

Самый простой способ для Hibernate сделать это для вас - это разбить вашу «сетку» на объект, содержащий список строк, и тогда ваш ParentEntity будет иметь список этих объектов.После этого Hibernate может легко отобразить это и с радостью извлечь структуру, если хотите, чтобы у вас все это было в памяти и не требовалось дополнительного выбора.

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