2015-02-04 3 views
2

Я пытаюсь сопоставить класс, который выглядит следующим образом:Hibernate карты класса как еще один

public class Skills { 
    private int[] levels; // 10 elements 
} 

Теперь отображение массива в Hibernate является большой болью, и как у меня не было никакой удачи вообще делать что перед , Я пробую другой подход. Каждый из 10 элементов фактически представляет собой мастерство. Подумайте об этом как ATK, STR, DEX, INT и т. Д. Из-за нескольких ограничений дизайна он должен использоваться как массив, иначе я бы просто добавил к нему 10 полей.

Настоящая боль заключается в сопоставлении, что в SQL, чтобы иметь больше смысла. Конечно, Hibernate может выполнять сериализацию класса, но это сверлит байты в столбцы. Теперь мне интересно, есть ли способ указать что-то вроде CompoundUserType (я могу сказать «эй, вот как будет выглядеть таблица, и это каждое значение поля!»), Или указать, что я каким-то образом хочу для обеспечения подкласса Skills $ Hbm, который содержит что-то по адресу

class Hbm { 
    private int atk, str, dex, Int... ; 
} 

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

+0

Могу я узнать, почему вы создаете массив уровней в таблице навыков. Вместо этого вы нормализуете его, создавая новую таблицу уровней, где вы можете хранить информацию о разных уровнях навыков и хранить ссылку уровня в таблице навыков: (т.е. навыки публичного класса {частный уровень уровня;) ) –

+0

Итак, поле должно быть массивом? Не можете ли вы объявить его как «Список» и добавить геттер и сеттер, которые работают с массивом? –

ответ

0

Возможно, я знаю, почему вы создаете массив уровней в таблице навыков. Вместо того, чтобы нормализовать его, создав таблицу новых уровней, где вы можете хранить информацию о различных уровнях навыков и сохранить ссылку уровня в таблице навыков: т.е. public class skills { private Level level; }

Вы также можете использовать вместо использования массива.

+0

Как я сказал в сообщении, это ограничение дизайна в структуре приложения. Это было бы совершенно беспорядочно, если бы мне пришлось повернуть все вокруг (я раньше рассматривал ваш подход, действительно), поэтому мне нужно пойти с другим. –

+0

Я надеюсь, что использование списка может помочь вам решить эту проблему –

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