public static class B {
@OneToMany(mappedBy = "aClass", fetch = FetchType.LAZY)
private List<C> cClasses;
}
public static class C {
@ManyToOne(fetch = FetchType.LAZY)
private A aClass;
}
for a B ↔︎ C relationship you are specifying as a bidirectional target a property of type A while it should be of type B . I think you should just remove the mappedBy from the @OneToMany .