У меня следующая структура класса:
public abstract class Creature{
private String name;
//strategy pattern composition
private SkillInterface skill;
}
public interface SkillInterface {
void attack();
}
public class NoSkill implements SkillInterface {
@Override
public void attack() {
//statements
}
}
Моя цель - сохранить объекты Существа за одной таблицей в базе данных. Подклассы SkillInterface без полей. Поскольку они определяют поведение, я хочу преобразовать выбранное имя класса SkillInterface в строку, так как мне нужно только сохранить имя класса текущей стратегии навыка существа со строкой, подобной skill.getClass (). GetSimpleName (). Я пытался реализовать это с помощью аннотации @Converter, используя класс AttributeConverter для преобразования SkillInterface в String и сохранения, но всегда были исключения из сопоставления. Я хочу иметь возможность сохранить его как строку и получить как объект SkillInterface.
Но как я могу реализовать это с Hibernate? Или у меня ошибка дизайна?