Witam. Próbuje zrobić w javie prosty cms. Potrzebuję do tego encje typu:

@Entity
class Page {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Long id;

	@Required
	public String name;

	@ManyToOne(fetch=FetchType.LAZY)
	public Page parent;
}

Dodatkowo napisałem metodę serializującą na obiekt json, dzięku której mogę utworzyć drzewo z takich danych.
Ze względu na to, że danych hierarchicznych będę mieć sporo (np. role, foldery, uprawnienia, itd.), chcąc nie powtarzać kodu (zwłaszcza do generowania drzew w formacie json) postanowiłem rozszerzyć moje podstawowe encje przez Hierarchiczną Encję Generyczną

@MappedSuperclass
public abstract class Generic<T extends Generic> {
	@Transient
	public Class<T> entityClass;
	Generic() {
		entityClass = ((Class) ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));
	}
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Long id;
	
	@ManyToOne(cascade = CascadeType.MERGE)
	@Constraints.Required
	public User creationUser;
	@Constraints.Required
@MappedSuperclass
public abstract class GenericDictionary<T extends Generic<T>> extends Generic<T> {

	@Required
	public String name;
	@Required
	public boolean active;
	
@MappedSuperclass
public class GenericHierarchicalDictionary<T extends Generic<T>> extends GenericDictionary<T> {
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="parent_id")
	public GenericHierarchicalDictionary<T> parent;

	public String prepareJsonTree() {}

Niestety mam problem z mapowaniem @ManyToOne. Klasa GenericHierarchicalDictionary nie jest encją, więc nie mogę jej podać w relacji. Błąd z konsoli:

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on models.Unit.parent references an unknown entity: models.GenericHierarchicalDictionary

Cały stack trace:

play.api.UnexpectedException: Unexpected exception[PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build EntityManagerFactory]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:148) ~[play_2.10.jar:2.2.4]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.4]
        at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.4]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.4]
        at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build EntityManagerFactory
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) ~[hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) ~[hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) ~[hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) ~[hibernate-jpa-2.0-api.jar:1.0.1.Final]
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) ~[hibernate-jpa-2.0-api.jar:1.0.1.Final]
        at play.db.jpa.JPAPlugin.onStart(JPAPlugin.java:35) ~[play-java-jpa_2.10.jar:2.2.4]
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on models.Unit.parent references an unknown entity: models.GenericHierarchicalDictionary
        at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:109) ~[hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1514) ~[hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1435) ~[hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1340) ~[hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1729) ~[hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
        at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94) ~[hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]

Pytałem także na stackoverflow. Ale póki co brak odpowiedzi:
http://stackoverflow.com/questions/27104464/java-hibernate-jpa-how-to-create-dynamic-generic-entity-that-is-self-related
http://stackoverflow.com/questions/27101716/apply-generic-class-mappedsuperclass-as-targetentity-error-manytoone-on-model

Dajcie mi znać czy też spotkaliście się z takim problemem. Jak sobie z nim poradzić?