I don't like this code much.
Personally, I'd prefer having a ctor that did something rather than a do-nothing default ctor and having to call setters.
I'd persist the Doctor, then add it to the List.
Is this synchronized? Doesn't look thread safe if that List is shared, mutable data.
I see no equals or hashCode implemented here. That might explain it. Best to use the primary key fields to determine equality.
I think you're desperately in need of a tutorial. Forget your assignment for a moment and do something simple: