When you eager load from a class to itself, this is a self-referential eager load. A generic lazy="joined" needs to know the depth at which you'd like to go when this occurs, otherwise it will stop as soon as it sees itself in the path of classes to be joined. The behavior of joinedload('*') is the same as setting lazy="joined" on the relationship - it's not the same as saying joinedload(Director.movies), which it would take to mean as an explicit, single joined load.
In this case, even though this is from a base class to itself, the subclass is different, so perhaps the check for self-referential joining needs to be tuned. that is ticket #2481. Here, if you must use joinedload('*') and not regular joinedload(Director.movies) (I'd never use '*' with joinedload, add a new relationship and your app grinds to a halt), then add a join depth to the relationship (sorry, this is relationship(), I don't know how to set this with Elixir):
movies = relationship("Movie", foreign_keys=Movie.director_id, join_depth=2)
> --
> You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
> To post to this group, send email to
sqlal...@googlegroups.com.
> To unsubscribe from this group, send email to
sqlalchemy+...@googlegroups.com.
> For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.
>