2014-12-02 2 views
0

Скажем, у меня есть объект person с полем, которое является профессией, которая представляет собой просто список строк. Каков канонический способ использования Spring и hibernate, чтобы ограничить этот список только подмножеством профессий, которые определены пользователем или администратором? Т.е. список глобальных, предопределенных профессий во время выполнения - {Accountant, Developer}, а пользователь добавляет «Plumber» в список. Теперь, если новый человек создан, я хотел бы ограничить возможные профессии, которые человек может иметь для 3, которые находятся в списке.Правильный способ ограничения значения элемента подмножеством набора

Первоначально я реализовал Enum, но это похоже на плохой дизайн, поскольку он генерируется во время компиляции и не может быть добавлен во время выполнения (я думаю?). Правильно ли будет определять одну таблицу столбцов с профессией, и при каждом запросе сделать человека, заполнить синглтон одним членом, который является списком профессий? Тогда объект объекта домена будет только источником профессии из синглтона (предположительно, на уровне обслуживания?).

ответ

0

Вы можете создать новую профессию Entity, которая связана с Person с отношением «один ко многим». Таким образом, профессия всегда есть только то, что сохраняется в Hibernate. Профессионалу не нужно многого. На данный момент только id и имя. Позже вы можете добавить дополнительные атрибуты по мере необходимости.

+0

О, хорошо, было любопытно, если это правильно. Наверное, я не могу понять, что реализация на стороне Java сочетается с дизайном спящего режима. Я по-прежнему представляю автономное приложение java, которое поддерживается только базой данных. Здесь не так, поскольку hibernate ограничивает значения Profession, которые без спящего режима (базы данных) не будут выполнены. Итак, должен ли член профессии Person быть List и заселен через сервисный уровень? – user3442536

+0

Возможно. Вы можете сделать однонаправленные отношения, когда Профессия не знает о Человеке. Но это зависит от вас. –