JPA OneToOne и ManyToMany между двумя объектами

Я задал вопрос ранее, но думаю, что это не былоДостаточно ясно, я буду более подробно с кодом.

У меня есть учитель и отдел

Многие учителя принадлежат к одному отделу и

В одном отделе есть один учитель, который возглавляет отдел.

Вот как я это реализую.

@Entity
public class Teacher extends Model {
@Required
public String surname;

@Required
public String othernames;

    ... 

@OneToOne(mappedBy = "deptHead")
public Department headedBy = new Department();

@ManyToOne(cascade=CascadeType.ALL)
public Department dept = new Department();

... 
}

и отдел Департамента

@Entity
public class Department extends Model {
@Required
public String deptName; 

@OneToMany(mappedBy="dept")
public List teachers = new ArrayList();

@OneToOne
public Teacher deptHead = new Teacher();

    ...

}

Я получаю ошибку ниже

    @6c4nj8nmg
    Internal Server Error (500) for request GET /

    JPA error
    A JPA error occurred (Unable to build EntityManagerFactory): could not instantiate   test objectmodels.Department

    play.exceptions.JPAException: Unable to build EntityManagerFactory
    at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:269)
    at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:525)
    at play.Play.start(Play.java:526)
    at play.Play.detectChanges(Play.java:630)
    at play.Invoker$Invocation.init(Invoker.java:198)
    at Invocation.HTTP Request(Play!)
    Caused by: org.hibernate.InstantiationException: could not instantiate test objectmodels.Department
    at org.hibernate.engine.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:48)
    at org.hibernate.engine.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:67)
    at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:67)
    at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:135)
    at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:485)
    at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:133)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
    at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:286)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
    at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:267)
    ... 5 more
    Caused by: java.lang.reflect.InvocationTargetException
    at  org.hibernate.engine.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:45)
    ... 15 more
     Caused by: java.lang.StackOverflowError
    at java.lang.Class.searchMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at      play.classloading.enhancers.PropertiesEnhancer$FieldAccessor.invokeWriteProperty(PropertiesEnhancer.java:268)
    at models.Department.(Department.java:23)
    at models.Teacher.(Teacher.java:47)
    at models.Department.(Department.java:26)
    ...

Нужна помощь по этим

Ответы на вопрос(2)

Ваш ответ на вопрос