title: hibernate - Persisting a composition interface of strategy pattern
body: <p>I have the following class structure:</p>
  
  <pre><code>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
     }
  }
  </code></pre>
  
  <p>My goal is to persist Creature objects at one table in database. Subclasses of SkillInterface are without any fields. As they determine the behaviour, I want to convert selected SkillInterface class name to a String, as I only need to persist the classname of the current skill strategy of creature, with a String like skill.getClass().getSimpleName(). I tried to implement it with @Converter annotation, using AttributeConverter class to convert SkillInterface to String and save, but always had mapping exceptions. I want to be able to save it as String and retrieve as SkillInterface object.</p>
  
  <p>But how can I implement it with Hibernate? Or do I have a design mistake?</p>