当急切加载子关系时,我怎样才能加载父模型的几列:
如果我只需要title
模型的chapters
列,则此方法有效:
session.query(Book)\
.options(joinedload('chapters').load_only('title'))
但这会引发错误:
session.query(Book.author)\
.options(joinedload('chapters').load_only('title'))
查询只有基于表达式的实体 - 找不到名为的属性 '章节'。
换句话说,我想在ORM语法中使用这个SQL:
SELECT
books.author,
chapters.title,
FROM
books JOIN chapters ON book.id = chapters.book_id
答案 0 :(得分:6)
错误消息显示您只选择Book.author
,而不是Book
的实例。如果chapters
返回的是一个字符串列表(author
),session.query(Book.author, Chapter.title).select_from(Book).join(Book.chapters)
将去哪里。
您可以这样做:
session.query(Book).options(load_only("author"), joinedload("chapters").load_only("title"))
或
test.Location = new Point(0, 800);