Hello Mike,
class X()
id: id: int = Column( Integer, primary_key=True)
a_id:int = Column(Integer, ForeignKey("A.id"))
subq = select(A_rel_B).join(B).order(B.size).limit(10)
class A()
id: id: int = Column( Integer, primary_key=True)
bs = relationship(B, viewonly=True, secondary=subq, uselist=False,primaryjoin=and_(A.id == subq.c.a_id))
class B()
id: id: int = Column( Integer, primary_key=True)
size= Column( Integer)
class A_rel_B()
a_id: :int = Column(Integer, ForeignKey("A.id"))
b_id: :int = Column(Integer, ForeignKey("B.id"))
x: int
q = select(X).options(
selectinload(A).options(joinedload(A.bs)),
with_loader_criteria(A_rel_B, func.fn(A_rel_B.b_id, x).is_(True))
)
When i add with_loader_criteria(A_rel_B, func.fn(A_rel_B.b_id, x).is_(True)), then x value is cached and don't change. It is ok?
Thanks