Hi Steve,
there is something strange with your mapping (although it doesn't affect the behavior you're seeing) which is your foreign key name from hatch to ship is named "FK_LOCATIONS_3"? Maybe just an overlook?
Anyway, it doesn't seem to be anything wrong with it. The only difference is that you THatch inherits from TLocation, not TPersistent, and I'm not sure how are the other attributes (Entity, Automapping?) Do you have any inheritance attribute being applied there?
Also, when you say "if I create a TDataSetField manually that doesn't help either", what does exactly happen? What are you doing in this case (source code) and what error message/behavior do you get?