2013-11-07 3 views
0

У меня есть класс «Папка», который имеет много файлов, так же, как показано нижеКак сохранить объекты в порядке их хранения в наборе?

class Folder { 
    ... 

    @ManyToMany 
    private Set<File> files= new HashSet<>(); 
} 

мне нужно сохранить не только файлы, папка имеет, но и порядок этого файла для этой папки (это могут отличаться для других). Если у меня есть 3 файла: "X Y Z", мне также нужно знать, что:

X = первый
Y = второй
Z = третий

Теперь, когда вы поняли проблему, есть нечто большее. Файлы имеют типы.

class File { 
    ... 

    @ManyToOne 
    private FileType type; 
} 

Каждый тип файла генерирует другой порядок в папке.

Таким образом, я могу иметь папку с 4-мя файлами:

"X", типа "JPEG"
"Y", типа "JPEG"
"Z", тип "PNG"
" W», тип "PNG"

В этом случае она должна быть

Для типа JPEG, Х = 1-й, 2-й Y =
Для типа PNG, Z = 1, W = 2

Я не уверен, что это лучший способ сделать это.

  • Должен ли я создать другой класс, который будет содержать отношение? У меня все еще была бы проблема различать типы файлов.
  • Должен ли я создать карту < FileType, FileWithOrder >, чтобы я мог отделить каждый тип файла, а затем дать им целое число со своим номером заказа?
  • Другие лучше sugestion? :)

Надеюсь, я был достаточно ясен в своей проблеме. Спасибо

+3

Измените 'HashSet' на' LinkedHashSet' или используйте 'List' вместо' Set'. Обратите внимание, что последнее зависит от ваших требований. –

+0

У Луиджи есть хорошие предложения. Лично я бы перечислил и добавил столбец ordernum в таблицу файлов. –

+0

Это решит все проблемы без какого-либо жесткого кода. Огромное спасибо. Я попробую. Есть ли разница с помощью Set/List? – rtmc

ответ

0

Если вы хотите отслеживать порядок вставки, я думаю, что List более приспособлен, чем Set. Что касается разделения по типу файла, я бы создал Map<FileType, List<File>> в дополнение к глобальному списку.

Это для Java-совместимости, но я не знаю, как это будет сохраняться Hibernate.

+0

Это (почти) невозможно сохранить коллекцию коллекций в Hibernate. –

+0

Да, это то, чего я боюсь. Думаю, подумать об этом на стороне базы данных было бы лучше начать, а затем адаптировать загруженные данные к таким структурам Java. – Joffrey

Смежные вопросы