From 472611b57ae0f7631cc8a214c8b4f3df77008262 Mon Sep 17 00:00:00 2001 From: longsizhuo Date: Sun, 24 May 2026 17:40:30 +0000 Subject: [PATCH] =?UTF-8?q?fix(posts):=20findFeedWithAuthor=20SELECT=20p.*?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=20content=5Fmd=20=E5=88=97=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #36 的 JOIN SQL 只 SELECT 了部分列,rowMapper 读 content_md 时 PSQLException: column not found。改 SELECT p.* 保留全列, author_* 别名列追加在后,rowMapper 正常工作。 --- .../backend/posts/repository/JdbcPostRepository.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/involutionhell/backend/posts/repository/JdbcPostRepository.java b/src/main/java/com/involutionhell/backend/posts/repository/JdbcPostRepository.java index 7b81353..0ffff6e 100644 --- a/src/main/java/com/involutionhell/backend/posts/repository/JdbcPostRepository.java +++ b/src/main/java/com/involutionhell/backend/posts/repository/JdbcPostRepository.java @@ -117,10 +117,9 @@ public List findByAuthor(Long authorId) { @Override public List findFeedWithAuthor(int limit, int offset) { - // JOIN user_accounts 一次拿回作者字段,消除 service 层 N+1 查询 - String sql = "SELECT p.id, p.author_id, p.slug, p.title, p.description, p.tags, " - + "p.cover_url, p.visibility, p.status, p.promoted_pr_url, " - + "p.view_count, p.created_at, p.updated_at, " + // p.* 取回 posts 全列(rowMapper 需要 content_md 等全字段), + // 再追加 3 个作者别名列,LEFT JOIN user_accounts 一次消除 N+1 + String sql = "SELECT p.*, " + "u.username AS author_username, " + "u.display_name AS author_display_name, " + "u.avatar_url AS author_avatar_url "