Heh, customer with 2 relations between address: visitingaddress and billingaddress. Now, to effectively do this, you have to specify relations, otherwise how to filter on an address to get the customer?
Also, the relations give you the power to specify aliases as well, join hints etc.
This definitely will stay, other systems with hidden relations all have limitations where they suddenly have to allow you use relations or it's not flexible.
So no I'm not kidding, though, are you?
(and no, it doesn't know all the relations, because there's no central beating core which controls it all and which limits your freedom of using the code... )
And... what if you want to load entity A and want to filter on entity E, but there are 4 different routes from A to E, via various entities.... Which one to pick?
Happy specifying that in other systems.
And.. the purpose of using an O/R mapper is that you can use your db in an OO way, without having to write SQL and the plumbing code. O/R mappers are just plumbing code, instead of writing it yourself, you grab one from the shelve.