У меня есть класс Player
, который содержит список Accessory
объектов. Есть два вида аксессуаров. У SocketedAccessories есть список SocketJewels, а у MagicAccessories есть список MagicEnchantments.
На уровне базы данных есть таблица players
, которая представляет игрока, и таблица accessories
, которая содержит список аксессуаров. У аксессуаров есть поле типа, которое указывает, являются ли они сокетами или магическими, а столбцы, которые используются только одним типом, просто остаются пустыми для записей другого типа. На каждом аксессуаре есть столы socket_jewels
и magic_enchantments
, представляющие драгоценные камни или магические чары.
Я пытаюсь найти правильный способ сопоставить это с Hibernate. Один из способов заключается в том, чтобы у игрока было два списка аксессуаров, один для SocketedAccessories и один для MagicAccessories. Это кажется нежелательным, хотя. Мне нужен способ указать, что у игрока должно быть поле List<Accessory> accessories
, которое содержит оба типа вещей.
Есть ли способ сказать Hibernate, либо в hbm.xml, либо в аннотациях, сделать это?