self.adapter = query._get_polymorphic_adapter(self, from_obj)
def corresponds_to(self, entity):
- if _is_aliased_class(entity):
+ if _is_aliased_class(entity) or self.is_aliased_class:
return entity is self.path_entity
else:
- return entity.isa(self.path_entity)
+ return entity.common_parent(self.path_entity)
def adapt_to_selectable(self, query, sel):
query._entities.append(self)
)
self.assert_sql_count(testing.db, go, 1)
+
+ def test_query_subclass_join_to_base_relation(self):
+ sess = create_session()
+ # non-polymorphic
+ eq_(sess.query(Engineer).join(Person.paperwork).all(), [e1, e2, e3])
+
def test_join_to_subclass(self):
sess = create_session()
eq_(sess.query(Company).join(('employees', people.join(engineers))).filter(Engineer.primary_language=='java').all(), [c1])