I asked a question earlier, but think it wasn\'t clear enough i will elaborate further with the code.
I have a Teacher entity and Department entity
Many Teachers
I removed the @oneToOne relationship between Teacher and Department and created a new entity called DepartmentHeads, everything now works fine.
Here is the Results.
@Entity
public class Teacher extends Model {
@Required
public String surname;
@Required
public String othernames;
...
@ManyToOne(cascade=CascadeType.ALL)
public Department dept = new Department();
...
}
@Entity
public class Department extends Model {
@Required
public String deptName;
@OneToMany(mappedBy="dept")
public List<Teacher> teachers = new ArrayList<Teacher>();
...
}
@Entity
public class DepartmentHead extends Model{
@OneToOne
public Teacher teacher = new Teacher();
@OneToOne
public Department dept = new Department();
}
Everything now works fine.
This is not a JPA problem, but is caused by recursive instantiation of Teacher
/Department
.
When you create, or ask JPA to create, an instance of Teacher
, the Teacher
attempts to instantiate a Department
, which instantiates a Teacher
..., to infinity.
Hence you're seeing a StackOverflowError
error near the end of that stack trace.
Remove the = new Teacher()
and = new Department()
expressions from the class definition; depend on and use appropriate setter methods when you create them.