From 58030803529497849fcbaea72fb7e321943dbbc5 Mon Sep 17 00:00:00 2001 From: qingfeng1121 Date: Tue, 28 Oct 2025 12:47:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(security):=20=E9=87=8D=E6=9E=84=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E9=85=8D=E7=BD=AE=E5=B9=B6=E6=B7=BB=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=AE=A4=E8=AF=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor: 将ResponseMessage移动到config包并增强功能 feat: 添加用户管理相关功能及密码加密配置 fix: 修复HelpController中README文件路径问题 docs: 更新application.properties配置注释 style: 清理无用导入和日志文件 --- README_API.md | 862 +- logs/web_project.log | 9060 ++--------------- logs/web_project.log.2025-10-16.0.gz | Bin 11546 -> 0 bytes logs/web_project.log.2025-10-20.0.gz | Bin 37048 -> 0 bytes logs/web_project.log.2025-10-22.0.gz | Bin 0 -> 70106 bytes logs/web_project.log.2025-10-26.0.gz | Bin 0 -> 2587 bytes logs/web_project.log.2025-10-27.0.gz | Bin 0 -> 125514 bytes .../GlobalExceptionHandler.java | 5 +- .../config/CustomUserDetailsService.java | 53 + .../config/PasswordEncoderConfig.java | 25 + .../config/ResponseMessage.java | 257 + .../myafterprojecy/config/SecurityConfig.java | 56 +- .../controller/ArticleController.java | 4 +- .../controller/AuthController.java | 125 + .../CategoryAttributeController.java | 2 +- .../controller/CategoryController.java | 2 +- .../controller/HelpController.java | 49 +- .../controller/MessageController.java | 2 +- .../controller/UserController.java | 134 + .../com/qf/myafterprojecy/pojo/Article.java | 13 + .../myafterprojecy/pojo/ResponseMessage.java | 128 - .../com/qf/myafterprojecy/pojo/Users.java | 89 + .../myafterprojecy/pojo/dto/MarkdownDto.java | 20 + .../qf/myafterprojecy/pojo/dto/UserDto.java | 61 + .../repository/UsersRepository.java | 63 + .../runner/MessageDataChecker.java | 169 - .../service/ArticleService.java | 91 +- .../service/CategoryAttributeService.java | 54 +- .../service/CategoryService.java | 52 +- .../service/MessageService.java | 67 +- .../myafterprojecy/service/UserService.java | 236 + .../service/imp/IArticleService.java | 2 +- .../imp/ICategoryAttributeService.java | 2 +- .../service/imp/ICategoryService.java | 2 +- .../service/imp/IMessageService.java | 2 +- .../service/imp/IUserService.java | 79 + ...itional-spring-configuration-metadata.json | 5 + src/main/resources/application.properties | 24 +- 38 files changed, 2733 insertions(+), 9062 deletions(-) delete mode 100644 logs/web_project.log.2025-10-16.0.gz delete mode 100644 logs/web_project.log.2025-10-20.0.gz create mode 100644 logs/web_project.log.2025-10-22.0.gz create mode 100644 logs/web_project.log.2025-10-26.0.gz create mode 100644 logs/web_project.log.2025-10-27.0.gz create mode 100644 src/main/java/com/qf/myafterprojecy/config/CustomUserDetailsService.java create mode 100644 src/main/java/com/qf/myafterprojecy/config/PasswordEncoderConfig.java create mode 100644 src/main/java/com/qf/myafterprojecy/config/ResponseMessage.java create mode 100644 src/main/java/com/qf/myafterprojecy/controller/AuthController.java create mode 100644 src/main/java/com/qf/myafterprojecy/controller/UserController.java delete mode 100644 src/main/java/com/qf/myafterprojecy/pojo/ResponseMessage.java create mode 100644 src/main/java/com/qf/myafterprojecy/pojo/Users.java create mode 100644 src/main/java/com/qf/myafterprojecy/pojo/dto/MarkdownDto.java create mode 100644 src/main/java/com/qf/myafterprojecy/pojo/dto/UserDto.java create mode 100644 src/main/java/com/qf/myafterprojecy/repository/UsersRepository.java delete mode 100644 src/main/java/com/qf/myafterprojecy/runner/MessageDataChecker.java create mode 100644 src/main/java/com/qf/myafterprojecy/service/UserService.java create mode 100644 src/main/java/com/qf/myafterprojecy/service/imp/IUserService.java create mode 100644 src/main/resources/META-INF/additional-spring-configuration-metadata.json diff --git a/README_API.md b/README_API.md index f1e9355..771decd 100644 --- a/README_API.md +++ b/README_API.md @@ -2,64 +2,69 @@ ## 项目概述 -MyAfterProject是一个基于Spring Boot的后端博客系统,提供文章管理、留言板等功能的RESTful API接口。系统集成了Spring Security和JWT认证机制,确保API的安全性和权限控制。本文档旨在帮助前端开发者理解和使用这些API接口,包括接口规范、请求/响应格式、认证方式及最佳实践。 +MyAfterProject是一个基于Spring Boot的后端博客系统,提供文章管理、留言板、用户管理等功能的RESTful API接口。系统集成了Spring Security,提供安全的HTTP访问机制。本文档旨在帮助前端开发者理解和使用这些API接口,包括接口规范、请求/响应格式、数据模型及最佳实践。 ## 技术栈 - **后端框架**: Spring Boot 2.x - **ORM框架**: Spring Data JPA - **数据库**: MySQL -- **缓存**: Redis -- **认证授权**: Spring Security + JWT Token +- **安全框架**: Spring Security - **API风格**: RESTful API - **错误处理**: 全局异常处理机制 -- **权限控制**: 基于角色的访问控制(RBAC) ## 项目结构 ``` src/main/java/com/qf/myafterprojecy/ ├── controller/ # 控制器层,处理HTTP请求 -│ ├── ArticleController.java # 文章相关API -│ ├── MessageController.java # 留言相关API -│ └── AuthController.java # 认证相关API +│ ├── ArticleController.java # 文章相关API +│ ├── MessageController.java # 留言相关API +│ ├── UserController.java # 用户相关API +│ ├── CategoryController.java # 分类相关API +│ ├── CategoryAttributeController.java # 分类属性相关API +│ ├── MarkdownController.java # Markdown相关API +│ └── HelpController.java # 帮助文档相关API ├── pojo/ # 实体类和数据传输对象 -│ ├── Article.java # 文章实体 -│ ├── Message.java # 留言实体 -│ ├── User.java # 用户实体 -│ ├── Role.java # 角色实体 -│ ├── ResponseMessage.java # 统一响应消息格式 -│ └── dto/ # 数据传输对象 -│ ├── ArticleDto.java # 文章DTO -│ └── MessageDto.java # 留言DTO +│ ├── Article.java # 文章实体 +│ ├── Message.java # 留言实体 +│ ├── Users.java # 用户实体 +│ ├── Category.java # 分类实体 +│ ├── Category_attribute.java # 分类属性实体 +│ ├── Markdown.java # Markdown实体 +│ └── dto/ # 数据传输对象 +│ ├── ArticleDto.java # 文章DTO +│ ├── MessageDto.java # 留言DTO +│ ├── UserDto.java # 用户DTO +│ ├── CategoryDto.java # 分类DTO +│ ├── CategoryAttributeDto.java # 分类属性DTO +│ └── MarkdownDto.java # Markdown DTO ├── repository/ # 数据访问层 -│ ├── ArticleRepository.java # 文章数据访问 -│ ├── MessageRepository.java # 留言数据访问 -│ ├── UserRepository.java # 用户数据访问 -│ └── RoleRepository.java # 角色数据访问 +│ ├── ArticleRepository.java # 文章数据访问 +│ ├── MessageRepository.java # 留言数据访问 +│ ├── UserRepository.java # 用户数据访问 +│ ├── CategoryRepository.java # 分类数据访问 +│ ├── CategoryAttributeRepository.java # 分类属性数据访问 +│ └── MarkdownRepository.java # Markdown数据访问 ├── service/ # 业务逻辑层 -│ ├── ArticleService.java # 文章服务实现 -│ ├── IArticleService.java # 文章服务接口 -│ ├── MessageService.java # 留言服务实现 -│ └── IMessageService.java # 留言服务接口 +│ ├── ArticleService.java # 文章服务实现 +│ ├── IArticleService.java # 文章服务接口 +│ ├── MessageService.java # 留言服务实现 +│ ├── IMessageService.java # 留言服务接口 +│ ├── UserService.java # 用户服务实现 +│ └── IUserService.java # 用户服务接口 ├── config/ # 配置类 -│ ├── SecurityConfig.java # Spring Security配置 -│ └── security/ # 安全相关组件 -│ ├── JwtTokenProvider.java # JWT令牌生成器 -│ ├── JwtAuthenticationFilter.java # JWT认证过滤器 -│ └── UserDetailsServiceImpl.java # 用户认证服务 -├── GlobalExceptionHandler.java # 全局异常处理器 -└── MyAfterProjecyApplication.java # 应用入口 +│ ├── SecurityConfig.java # Spring Security配置 +│ └── ResponseMessage.java # 统一响应消息格式 +├── GlobalExceptionHandler.java # 全局异常处理器 +└── MyAfterProjecyApplication.java # 应用入口 ``` ## 配置信息 - **服务地址**: `http://localhost:8080` - **API基础路径**: `/api` -- **认证头**: `Authorization: Bearer {token}` -- **默认测试账号**: - - 作者账号: `test_author` / `password123` (拥有AUTHOR角色) - - 管理员账号: `test_admin` / `admin123` (拥有ADMIN角色) +- **安全配置**: 当前配置允许所有请求通过,不需要认证 ## API接口详细说明 @@ -99,12 +104,14 @@ GET /api/articles "articleid": 1, "title": "文章标题", "content": "文章内容...", - "typeid": 1, + "attributeid": 1, "img": "图片URL", "createdAt": "2023-01-01T10:00:00", "updatedAt": "2023-01-01T10:00:00", "viewCount": 100, - "status": 1 + "likes": 0, + "status": 1, + "markdownid": 0 }, // 更多文章... ] @@ -132,27 +139,28 @@ GET /api/articles/{id} "articleid": 1, "title": "文章标题", "content": "文章内容...", - "typeid": 1, + "attributeid": 1, "img": "图片URL", "createdAt": "2023-01-01T10:00:00", "updatedAt": "2023-01-01T10:00:00", - "viewCount": 101, - "status": 1 + "likes": 0, + "status": 1, + "markdownid": 0 } } ``` -#### 1.3 根据分类获取文章 +#### 1.3 根据属性获取文章 ``` -GET /api/articles/category/{categoryId} +GET /api/articles/attribute/{attributeId} ``` -**功能**: 获取指定分类下的所有文章 +**功能**: 获取指定属性下的所有文章 **请求参数**: -- `categoryId`: 分类ID(路径参数) +- `attributeId`: 属性ID(路径参数) **返回数据**: ```json @@ -166,7 +174,30 @@ GET /api/articles/category/{categoryId} } ``` -#### 1.4 获取热门文章 +#### 1.4 增加文章浏览量 + +``` +POST /api/articles/view/{id} +``` + +**功能**: 增加指定文章的浏览量 + +**请求参数**: +- `id`: 文章ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "更新成功", + "success": true, + "data": { + // 更新后的文章信息 + } +} +``` + +#### 1.5 获取热门文章 ``` GET /api/articles/popular @@ -188,7 +219,7 @@ GET /api/articles/popular } ``` -#### 1.5 创建文章(需要认证) +#### 1.6 创建文章 ``` POST /api/articles @@ -196,16 +227,12 @@ POST /api/articles **功能**: 创建新文章 -**权限**: 需要AUTHOR角色 (通过`@PreAuthorize("hasRole('AUTHOR')")`控制) - -**请求头**: -- `Authorization: Bearer {token}` (必需) - **请求体**: ```json { "title": "新文章标题", "content": "新文章内容", + "attributeid": 1, "img": "图片URL", "status": 1 // 0-草稿,1-已发布 } @@ -226,7 +253,7 @@ POST /api/articles } ``` -#### 1.6 更新文章(需要认证) +#### 1.7 更新文章 ``` PUT /api/articles/{id} @@ -234,11 +261,6 @@ PUT /api/articles/{id} **功能**: 更新现有文章 -**权限**: 需要AUTHOR角色 (通过`@PreAuthorize("hasRole('AUTHOR')")`控制) - -**请求头**: -- `Authorization: Bearer {token}` (必需) - **请求参数**: - `id`: 文章ID(路径参数) @@ -247,6 +269,7 @@ PUT /api/articles/{id} { "title": "更新后的标题", "content": "更新后的内容", + "attributeid": 1, "img": "更新后的图片URL", "status": 1 } @@ -264,18 +287,13 @@ PUT /api/articles/{id} } ``` -#### 1.7 删除文章(需要认证) +#### 1.8 删除文章 ``` DELETE /api/articles/{id} ``` -**功能**: 删除指定文章 - -**权限**: 需要AUTHOR或ADMIN角色 (通过`@PreAuthorize("hasRole('AUTHOR') or hasRole('ADMIN')")`控制) - -**请求头**: -- `Authorization: Bearer {token}` (必需) +**功能**: 删除指定文章(实际为软删除,将状态标记为2) **请求参数**: - `id`: 文章ID(路径参数) @@ -286,9 +304,7 @@ DELETE /api/articles/{id} "code": 200, "message": "删除成功", "success": true, - "data": { - // 被删除的文章信息 - } + "data": null } ``` @@ -319,7 +335,8 @@ GET /api/messages "createdAt": "2023-01-01T10:00:00", "parentid": null, // 父留言ID,null表示主留言 "replyid": null, // 回复留言ID,null表示无回复 - "articleid": null // 关联的文章ID,null表示无关联 + "articleid": null, // 关联的文章ID,null表示无关联 + "likes": 0 // 点赞数 }, // 更多留言... ] @@ -349,7 +366,119 @@ GET /api/messages/{id} } ``` -#### 2.3 创建留言 +#### 2.3 根据文章ID获取留言 + +``` +GET /api/messages/article/{articleId} +``` + +**功能**: 获取指定文章下的所有留言 + +**请求参数**: +- `articleId`: 文章ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 留言列表 + ] +} +``` + +#### 2.4 获取根留言 + +``` +GET /api/messages/root +``` + +**功能**: 获取所有根留言(非回复的留言) + +**请求参数**: 无 + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 根留言列表 + ] +} +``` + +#### 2.5 获取回复列表 + +``` +GET /api/messages/{parentId}/replies +``` + +**功能**: 根据父留言ID获取回复列表 + +**请求参数**: +- `parentId`: 父留言ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 回复列表 + ] +} +``` + +#### 2.6 搜索留言 + +``` +GET /api/messages/search?nickname={nickname} +``` + +**功能**: 根据昵称搜索留言 + +**请求参数**: +- `nickname`: 昵称(查询参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 匹配的留言列表 + ] +} +``` + +#### 2.7 获取文章评论数量 + +``` +GET /api/messages/count/article/{articleId} +``` + +**功能**: 获取指定文章的评论数量 + +**请求参数**: +- `articleId`: 文章ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": 10 // 评论数量 +} +``` + +#### 2.8 创建留言 ``` POST /api/messages @@ -380,18 +509,36 @@ POST /api/messages } ``` -#### 2.4 删除留言(需要认证) +#### 2.9 点赞留言 + +``` +POST /api/messages/{id}/like +``` + +**功能**: 增加留言的点赞数 + +**请求参数**: +- `id`: 留言ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "操作成功", + "success": true, + "data": { + // 更新后的留言信息 + } +} +``` + +#### 2.10 删除留言 ``` DELETE /api/messages/{id} ``` -**功能**: 删除指定留言 - -**权限**: 需要ADMIN角色 - -**请求头**: -- `Authorization: Bearer {token}` (必需) +**功能**: 删除指定留言及其所有回复 **请求参数**: - `id`: 留言ID(路径参数) @@ -402,12 +549,347 @@ DELETE /api/messages/{id} "code": 200, "message": "删除成功", "success": true, + "data": null +} +``` + +#### 2.11 删除所有留言 + +``` +DELETE /api/messages/all +``` + +**功能**: 删除所有留言 + +**请求参数**: 无 + +**返回数据**: +```json +{ + "code": 200, + "message": "删除成功", + "success": true, + "data": null +} +``` + +### 3. 用户管理API + +#### 3.1 获取所有用户 + +``` +GET /api/users +``` + +**功能**: 获取所有用户列表 + +**请求参数**: 无 + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 用户列表 + ] +} +``` + +#### 3.2 根据ID获取用户 + +``` +GET /api/users/{id} +``` + +**功能**: 根据ID获取用户信息 + +**请求参数**: +- `id`: 用户ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, "data": { - // 被删除的留言信息 + // 用户信息 } } ``` +#### 3.3 根据用户名获取用户 + +``` +GET /api/users/username/{username} +``` + +**功能**: 根据用户名获取用户信息 + +**请求参数**: +- `username`: 用户名(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": { + // 用户信息 + } +} +``` + +#### 3.4 根据角色获取用户 + +``` +GET /api/users/role/{role} +``` + +**功能**: 根据角色获取用户列表 + +**请求参数**: +- `role`: 角色ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 用户列表 + ] +} +``` + +#### 3.5 创建用户 + +``` +POST /api/users +``` + +**功能**: 创建新用户 + +**请求体**: +```json +{ + "username": "新用户名", + "password": "密码", + "email": "email@example.com", + "phone": "13800138000", + "role": 1 +} +``` + +**返回数据**: +```json +{ + "code": 200, + "message": "保存成功", + "success": true, + "data": { + // 创建的用户信息 + } +} +``` + +#### 3.6 更新用户 + +``` +PUT /api/users/{id} +``` + +**功能**: 更新用户信息 + +**请求参数**: +- `id`: 用户ID(路径参数) + +**请求体**: +```json +{ + "username": "更新后的用户名", + "password": "新密码", + "email": "newemail@example.com", + "phone": "13900139000", + "role": 2 +} +``` + +**返回数据**: +```json +{ + "code": 200, + "message": "更新成功", + "success": true, + "data": { + // 更新后的用户信息 + } +} +``` + +#### 3.7 删除用户 + +``` +DELETE /api/users/{id} +``` + +**功能**: 删除指定用户 + +**请求参数**: +- `id`: 用户ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "删除成功", + "success": true, + "data": true +} +``` + +#### 3.8 检查用户名是否存在 + +``` +GET /api/users/check/username/{username} +``` + +**功能**: 检查指定用户名是否已存在 + +**请求参数**: +- `username`: 用户名(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": true // true表示存在,false表示不存在 +} +``` + +#### 3.9 检查邮箱是否存在 + +``` +GET /api/users/check/email/{email} +``` + +**功能**: 检查指定邮箱是否已存在 + +**请求参数**: +- `email`: 邮箱(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": true // true表示存在,false表示不存在 +} +``` + +### 4. 分类管理API + +#### 4.1 获取所有分类 + +``` +GET /api/categories +``` + +**功能**: 获取所有分类列表 + +**请求参数**: 无 + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": [ + // 分类列表 + ] +} +``` + +### 5. 分类属性管理API + +#### 5.1 根据ID获取分类属性 + +``` +GET /api/category-attributes/{id} +``` + +**功能**: 根据ID获取分类属性详情 + +**请求参数**: +- `id`: 属性ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": { + // 分类属性信息 + } +} +``` + +### 6. Markdown管理API + +#### 6.1 根据ID获取Markdown内容 + +``` +GET /api/markdowns/{id} +``` + +**功能**: 根据ID获取Markdown内容 + +**请求参数**: +- `id`: Markdown ID(路径参数) + +**返回数据**: +```json +{ + "code": 200, + "message": "查询成功", + "success": true, + "data": { + // Markdown内容 + } +} +``` + +### 7. 帮助文档API + +#### 7.1 获取API文档 + +``` +GET /api/help +``` + +**功能**: 获取README_API.md文档内容 + +**请求参数**: 无 + +**返回数据**: +```json +{ + "code": 200, + "message": "获取API文档成功", + "success": true, + "data": "# MyAfterProject 开发文档(前端使用)\n..." +} +``` + ## 数据模型详解 ### 1. 文章模型 (Article) @@ -417,12 +899,14 @@ DELETE /api/messages/{id} | articleid | Integer | 文章ID(主键) | 否 | | title | String | 文章标题 | 否 | | content | String | 文章内容 | 否 | -| typeid | Integer | 分类ID | 否 | +| attributeid | Integer | 属性ID | 否 | | img | String | 文章图片URL | 是 | | createdAt | LocalDateTime | 创建时间 | 是 | | updatedAt | LocalDateTime | 更新时间 | 是 | | viewCount | Integer | 浏览次数 | 是 | +| likes | Integer | 点赞数 | 是 | | status | Integer | 状态(0-草稿,1-已发布,2-已删除) | 是 | +| markdownid | Integer | markdown文档ID(0表示普通文章) | 是 | ### 2. 留言模型 (Message) @@ -434,72 +918,20 @@ DELETE /api/messages/{id} | content | String | 留言内容 | 是 | | createdAt | Date | 创建时间 | 是 | | parentid | Integer | 父留言ID(用于回复功能) | 是 | +| replyid | Integer | 回复留言ID | 是 | | articleid | Integer | 关联的文章ID | 是 | +| likes | Integer | 点赞数 | 是 | -### 3. 数据传输对象 (DTO) +### 3. 用户模型 (Users) -DTO类用于前后端数据传输,是对实体类的简化,只包含需要传输的字段。 - -- **ArticleDto**: 包含文章的基本信息,用于创建和更新文章 -- **MessageDto**: 包含留言的基本信息,用于创建和更新留言 -- **LoginRequest**: 登录请求参数 -- **SignupRequest**: 注册请求参数 -- **JwtResponse**: JWT认证响应 - -## 认证与授权 - -系统使用JWT (JSON Web Token) 进行身份认证。在访问需要授权的API接口时,前端需要在请求头中包含有效的JWT令牌。 - -### 获取JWT令牌 - -``` -POST /api/auth/signin -``` - -**功能**: 用户登录并获取JWT令牌 - -**请求体**: -```json -{ - "username": "test_author", - "password": "password123" -} -``` - -**返回数据**: -```json -{ - "code": 200, - "message": "登录成功", - "success": true, - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "type": "Bearer", - "id": 1, - "username": "test_author", - "email": "author@example.com", - "roles": ["ROLE_AUTHOR"] - } -} -``` - -### 用户注册 - -``` -POST /api/auth/signup -``` - -**功能**: 用户注册新账号 - -**请求体**: -```json -{ - "username": "新用户名", - "email": "user@example.com", - "password": "密码123", - "role": "author" // 可选值: user, author, admin -} -``` +| 字段名 | 类型 | 描述 | 是否可为空 | +|-------|------|-----|-----------| +| id | Long | 用户ID(主键) | 否 | +| username | String | 用户名 | 否 | +| password | String | 密码 | 否 | +| email | String | 邮箱 | 否 | +| phone | String | 手机号 | 否 | +| role | Integer | 角色ID | 否 | ## 前端调用示例 @@ -527,28 +959,6 @@ const api = axios.create({ } }); -// 认证相关API -export const authAPI = { - // 用户登录 - login: (credentials) => api.post('/auth/signin', credentials), - // 用户注册 - register: (userData) => api.post('/auth/signup', userData) -}; - -// 请求拦截器 - 添加认证token -api.interceptors.request.use( - config => { - const token = localStorage.getItem('token'); - if (token) { - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - error => { - return Promise.reject(error); - } -); - // 响应拦截器 - 统一处理响应 api.interceptors.response.use( response => { @@ -574,8 +984,10 @@ export const articleAPI = { getAllArticles: () => api.get('/articles'), // 获取单篇文章 getArticleById: (id) => api.get(`/articles/${id}`), - // 根据分类获取文章 - getArticlesByCategory: (categoryId) => api.get(`/articles/category/${categoryId}`), + // 根据属性获取文章 + getArticlesByAttribute: (attributeId) => api.get(`/articles/attribute/${attributeId}`), + // 增加文章浏览量 + incrementViewCount: (id) => api.post(`/articles/view/${id}`), // 获取热门文章 getPopularArticles: () => api.get('/articles/popular'), // 创建文章 @@ -592,10 +1004,70 @@ export const messageAPI = { getAllMessages: () => api.get('/messages'), // 获取单条留言 getMessageById: (id) => api.get(`/messages/${id}`), + // 根据文章ID获取留言 + getMessagesByArticleId: (articleId) => api.get(`/messages/article/${articleId}`), + // 获取根留言 + getRootMessages: () => api.get('/messages/root'), + // 获取回复列表 + getRepliesByParentId: (parentId) => api.get(`/messages/${parentId}/replies`), + // 搜索留言 + searchMessagesByNickname: (nickname) => api.get(`/messages/search?nickname=${nickname}`), + // 获取文章评论数量 + getMessageCountByArticleId: (articleId) => api.get(`/messages/count/article/${articleId}`), // 创建留言 saveMessage: (messageData) => api.post('/messages', messageData), + // 点赞留言 + likeMessage: (id) => api.post(`/messages/${id}/like`), // 删除留言 - deleteMessage: (id) => api.delete(`/messages/${id}`) + deleteMessage: (id) => api.delete(`/messages/${id}`), + // 删除所有留言 + deleteAllMessages: () => api.delete('/messages/all') +}; + +// 用户相关API +export const userAPI = { + // 获取所有用户 + getAllUsers: () => api.get('/users'), + // 根据ID获取用户 + getUserById: (id) => api.get(`/users/${id}`), + // 根据用户名获取用户 + getUserByUsername: (username) => api.get(`/users/username/${username}`), + // 根据角色获取用户 + getUsersByRole: (role) => api.get(`/users/role/${role}`), + // 创建用户 + createUser: (userData) => api.post('/users', userData), + // 更新用户 + updateUser: (id, userData) => api.put(`/users/${id}`, userData), + // 删除用户 + deleteUser: (id) => api.delete(`/users/${id}`), + // 检查用户名是否存在 + checkUsernameExists: (username) => api.get(`/users/check/username/${username}`), + // 检查邮箱是否存在 + checkEmailExists: (email) => api.get(`/users/check/email/${email}`) +}; + +// 分类相关API +export const categoryAPI = { + // 获取所有分类 + getAllCategories: () => api.get('/categories') +}; + +// 分类属性相关API +export const categoryAttributeAPI = { + // 根据ID获取分类属性 + getAttributeById: (id) => api.get(`/category-attributes/${id}`) +}; + +// Markdown相关API +export const markdownAPI = { + // 根据ID获取Markdown内容 + getMarkdownById: (id) => api.get(`/markdowns/${id}`) +}; + +// 帮助文档API +export const helpAPI = { + // 获取API文档 + getApiDocumentation: () => api.get('/help') }; export default api; @@ -604,7 +1076,7 @@ export default api; ### 3. 在组件中使用API ```javascript -import { articleAPI, messageAPI } from './api'; +import { articleAPI, messageAPI, userAPI } from './api'; // 获取文章列表 async function fetchArticles() { @@ -628,6 +1100,18 @@ async function postMessage(messageData) { throw error; } } + +// 创建用户 +async function registerUser(userData) { + try { + const response = await userAPI.createUser(userData); + console.log('用户创建成功:', response.data); + return response.data; + } catch (error) { + console.error('用户创建失败:', error); + throw error; + } +} ``` ## 错误处理指南 @@ -637,8 +1121,6 @@ async function postMessage(messageData) { | HTTP状态码 | 错误描述 | 可能原因 | 处理方式 | |-----------|---------|---------|---------| | 400 | Bad Request | 请求参数错误或缺失 | 检查请求参数是否正确 | -| 401 | Unauthorized | 未授权访问 | 需要登录获取token | -| 403 | Forbidden | 权限不足 | 确认用户是否有足够权限 | | 404 | Not Found | 请求资源不存在 | 检查请求URL或资源ID是否正确 | | 500 | Internal Server Error | 服务器内部错误 | 查看服务器日志,联系后端开发人员 | @@ -646,18 +1128,13 @@ async function postMessage(messageData) { 1. 在前端实现全局响应拦截器,统一处理API返回的错误 2. 为不同类型的错误显示相应的提示信息 -3. 对于需要认证的API,在401错误时引导用户登录 -4. 添加请求超时处理和重试机制 +3. 添加请求超时处理和重试机制 ## 开发环境配置 ### 跨域配置 -后端已配置CORS,允许从 `http://localhost:3000` 访问(前端开发服务器默认端口)。如果前端开发服务器使用其他端口,需要修改后端的 `application.properties` 中的 `cors.allowed-origins` 配置。 - -### 认证配置 - -对于需要认证的API,前端需要在请求头中添加JWT token。获取token的方式可以通过登录接口(本项目暂未实现完整的用户认证功能)。 +后端已配置CORS支持,允许前端应用访问API接口。 ## 性能优化建议 @@ -676,18 +1153,39 @@ async function postMessage(messageData) { | articleid |<--+ | messageid | | title | | | nickname | | content | | | email | -| typeid | | | content | +| attributeid | | | content | | img | | | createdAt | | createdAt | | | parentid |-->| | updatedAt | | | articleid |-->+ -| viewCount | | +-------------+ +| viewCount | | | likes | +| likes | | +-------------+ | status | | +| markdownid | | +-------------+ | | ++-------------+ | +| Users | | ++-------------+ | +| id | | +| username | | +| password | | +| email | | +| phone | | +| role | | ++-------------+ | | - +-------------+ - | Reply | - +-------------+ - | (通过Message.parentid实现) | - +-------------+ ++---------------+ | +| CategoryAttribute|<-+ ++---------------+ | +| id | | +| attribute_name| | +| category_id | | ++---------------+ | + | ++-------------+ | +| Category |---+ ++-------------+ +| id | +| name | ++-------------+ ``` \ No newline at end of file diff --git a/logs/web_project.log b/logs/web_project.log index 1222f47..d7b6dfd 100644 --- a/logs/web_project.log +++ b/logs/web_project.log @@ -1,192 +1,377 @@ -2025-10-22 10:57:48 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 10:57:49 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 10:57:49 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 10:57:49 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable -2025-10-22 10:57:49 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2025-10-22 10:57:49 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 10:57:49 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 56 ms. Found 4 JPA repository interfaces. -2025-10-22 10:57:49 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 10:57:50 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 10:57:50 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 10:57:50 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 10:57:50 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 10:57:50 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1194 ms -2025-10-22 10:57:50 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 10:57:50 [restartedMain] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.12.Final -2025-10-22 10:57:50 [restartedMain] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} -2025-10-22 10:57:50 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 10:57:50 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 10:57:50 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 10:57:51 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 10:57:51 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 10:57:51 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 2d731385-df19-4fdc-97bd-6c0a7dee5f37 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 10:57:51 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5b224995, org.springframework.security.web.context.SecurityContextPersistenceFilter@4b4473aa, org.springframework.security.web.header.HeaderWriterFilter@32b9bbb2, org.springframework.security.web.authentication.logout.LogoutFilter@5754dbfa, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2d37fa49, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@795609b9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@369600ac, org.springframework.security.web.access.ExceptionTranslationFilter@1de92d7a, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7a56b4b1] -2025-10-22 10:57:52 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 10:57:52 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 10:57:52 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 3.532 seconds (JVM running for 3.887) -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 10:57:52 CST 2025] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 206 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=206 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 206 -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [206] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [206] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [206] -2025-10-22 10:57:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [206] -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 206 -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID206: 成功=true -2025-10-22 10:57:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 10:58:20 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 10:58:20 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 10:58:20 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 11:01:58 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:01:58 [Thread-5] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:01:58 [Thread-5] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 11:01:58 [Thread-5] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:01:58 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:01:58 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:01:58 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:01:58 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:01:58 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 15 ms. Found 4 JPA repository interfaces. -2025-10-22 11:01:58 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:01:58 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:01:58 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:01:58 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 299 ms -2025-10-22 11:01:58 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:01:58 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:01:58 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:01:58 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:01:58 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:01:58 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:01:58 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 96c296a5-e1ff-4747-983a-e7e64edab31d - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:01:58 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@542e1947, org.springframework.security.web.context.SecurityContextPersistenceFilter@537a8c45, org.springframework.security.web.header.HeaderWriterFilter@4f1cd8, org.springframework.security.web.authentication.logout.LogoutFilter@43abb4ba, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@264fc565, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3c656255, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@64b4e233, org.springframework.security.web.access.ExceptionTranslationFilter@642fd3fa, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@76b1b7db] -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.575 seconds (JVM running for 250.449) -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:01:58 CST 2025] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 207 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=207 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 207 -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [207] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [207] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [207] -2025-10-22 11:01:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [207] -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 207 -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID207: 成功=true -2025-10-22 11:01:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:01:58 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:02 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:02 [Thread-7] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:02 [Thread-7] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:02 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:02 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:02 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:02 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:02 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:02 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:02 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:02 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:02 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:02 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:02 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:02 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:02 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 161 ms -2025-10-22 11:02:02 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:02 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:02 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:02 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:02 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:02 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:02 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MessageController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MessageController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problem: - Syntax error on token "/", delete this token - -2025-10-22 11:02:02 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:02 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:02 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:02 [restartedMain] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:02 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - +2025-10-28 11:17:42 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:17:42 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:17:42 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:17:42 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable +2025-10-28 11:17:42 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' +2025-10-28 11:17:42 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:17:42 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 57 ms. Found 6 JPA repository interfaces. +2025-10-28 11:17:43 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:17:43 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:17:43 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:17:43 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:17:43 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:17:43 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1445 ms +2025-10-28 11:17:43 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:17:43 [restartedMain] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.12.Final +2025-10-28 11:17:44 [restartedMain] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} +2025-10-28 11:17:44 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:17:44 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:17:44 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:17:44 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:17:44 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:17:45 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e82962d, org.springframework.security.web.context.SecurityContextPersistenceFilter@5121e031, org.springframework.security.web.header.HeaderWriterFilter@5dec77f9, org.springframework.security.web.authentication.logout.LogoutFilter@310cae77, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@674e0b2f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@63c48211, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@28026d02, org.springframework.security.web.session.SessionManagementFilter@7e293ef0, org.springframework.security.web.access.ExceptionTranslationFilter@1fe78120, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6a035d1d] +2025-10-28 11:17:45 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:17:46 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:17:46 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:17:46 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 4.367 seconds (JVM running for 5.063) +2025-10-28 11:18:00 [http-nio-8080-exec-3] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-28 11:18:00 [http-nio-8080-exec-3] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-28 11:18:00 [http-nio-8080-exec-3] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-28 11:18:01 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:01 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - ոIDȡϢ: 3 +2025-10-28 11:18:01 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - IDѯϢ: 3 +2025-10-28 11:18:01 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:01 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:01 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:01 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - ոIDȡϢ: 4 +2025-10-28 11:18:01 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - IDѯϢ: 4 +2025-10-28 11:18:01 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] +2025-10-28 11:18:01 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:01 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:01 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - ոIDȡϢ: 5 +2025-10-28 11:18:01 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - IDѯϢ: 5 +2025-10-28 11:18:01 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] +2025-10-28 11:18:01 [http-nio-8080-exec-7] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:01 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:34 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:34 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:34 [http-nio-8080-exec-8] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:18:34 [http-nio-8080-exec-8] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:18:34 [http-nio-8080-exec-8] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:18:34 [http-nio-8080-exec-8] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/3,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:18:34 [http-nio-8080-exec-8] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:18:35 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:35 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:35 [http-nio-8080-exec-9] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:18:35 [http-nio-8080-exec-9] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:18:35 [http-nio-8080-exec-9] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:18:35 [http-nio-8080-exec-9] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/3,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:18:35 [http-nio-8080-exec-9] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:18:36 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:36 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:36 [http-nio-8080-exec-10] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:18:36 [http-nio-8080-exec-10] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:18:36 [http-nio-8080-exec-10] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:18:36 [http-nio-8080-exec-10] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/3,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:18:36 [http-nio-8080-exec-10] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:18:37 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:37 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - ոIDȡϢ: 3 +2025-10-28 11:18:37 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - IDѯϢ: 3 +2025-10-28 11:18:37 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:18:37 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:37 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:37 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - ոIDȡϢ: 4 +2025-10-28 11:18:37 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - IDѯϢ: 4 +2025-10-28 11:18:37 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] +2025-10-28 11:18:37 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:37 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:18:37 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - ոIDȡϢ: 5 +2025-10-28 11:18:37 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - IDѯϢ: 5 +2025-10-28 11:18:37 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] +2025-10-28 11:18:37 [http-nio-8080-exec-7] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:18:37 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:23:40 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:23:40 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:23:40 [http-nio-8080-exec-9] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:23:40 [http-nio-8080-exec-9] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:23:40 [http-nio-8080-exec-9] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:23:40 [http-nio-8080-exec-9] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/3,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:23:40 [http-nio-8080-exec-9] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:23:42 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:23:42 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - ոIDȡϢ: 3 +2025-10-28 11:23:42 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - IDѯϢ: 3 +2025-10-28 11:23:42 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:23:42 [http-nio-8080-exec-1] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:23:42 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:23:42 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - ոIDȡϢ: 4 +2025-10-28 11:23:42 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - IDѯϢ: 4 +2025-10-28 11:23:42 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] +2025-10-28 11:23:42 [http-nio-8080-exec-2] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:23:42 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:23:42 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - ոIDȡϢ: 5 +2025-10-28 11:23:42 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - IDѯϢ: 5 +2025-10-28 11:23:42 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] +2025-10-28 11:23:42 [http-nio-8080-exec-6] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:23:42 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:33:14 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 4 class path changes (0 additions, 0 deletions, 4 modifications) +2025-10-28 11:33:14 [Thread-6] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:14 [Thread-6] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' +2025-10-28 11:33:14 [Thread-6] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:14 [Thread-6] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:14 [Thread-6] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:15 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:15 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:15 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:15 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:15 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 18 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:15 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:15 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:15 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:15 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 319 ms +2025-10-28 11:33:15 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:15 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:15 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:15 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:15 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:15 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:15 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2c1b8ea1, org.springframework.security.web.context.SecurityContextPersistenceFilter@4bfcef78, org.springframework.security.web.header.HeaderWriterFilter@5955d223, org.springframework.security.web.authentication.logout.LogoutFilter@2d3f35cd, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3e46a98f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4975a0ae, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2b04e366, org.springframework.security.web.session.SessionManagementFilter@690435b5, org.springframework.security.web.access.ExceptionTranslationFilter@2bcbd098, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2bc220c2] +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:15 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.734 seconds (JVM running for 934.621) +2025-10-28 11:33:15 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:33:25 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 4 class path changes (0 additions, 0 deletions, 4 modifications) +2025-10-28 11:33:25 [Thread-8] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:25 [Thread-8] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:25 [Thread-8] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:25 [Thread-8] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:26 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 24 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:26 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:26 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:26 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:26 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:26 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 281 ms +2025-10-28 11:33:26 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:26 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:26 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:26 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:26 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@a5914bf, org.springframework.security.web.context.SecurityContextPersistenceFilter@63e1f04a, org.springframework.security.web.header.HeaderWriterFilter@67acd1de, org.springframework.security.web.authentication.logout.LogoutFilter@2eb381e6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5bf884c6, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5adb9c46, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@18923b1b, org.springframework.security.web.session.SessionManagementFilter@5c6882e4, org.springframework.security.web.access.ExceptionTranslationFilter@7c289129, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@4c999b6b] +2025-10-28 11:33:27 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:27 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:27 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:27 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 1.085 seconds (JVM running for 945.941) +2025-10-28 11:33:27 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:33:31 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:33:31 [Thread-12] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:31 [Thread-12] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:31 [Thread-12] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:31 [Thread-12] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:31 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 20 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:32 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:32 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:32 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:32 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 222 ms +2025-10-28 11:33:32 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:32 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:32 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:32 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:32 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@35578631, org.springframework.security.web.context.SecurityContextPersistenceFilter@21c44b81, org.springframework.security.web.header.HeaderWriterFilter@7d2508df, org.springframework.security.web.authentication.logout.LogoutFilter@1657e455, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5258d9e5, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7ee4081, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@44465e59, org.springframework.security.web.session.SessionManagementFilter@5718a51f, org.springframework.security.web.access.ExceptionTranslationFilter@616241b5, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@674d1ca] +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:32 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.588 seconds (JVM running for 951.306) +2025-10-28 11:33:32 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:33:38 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:33:39 [Thread-16] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:39 [Thread-16] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:39 [Thread-16] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:39 [Thread-16] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:39 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:39 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:39 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:39 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:39 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:39 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:39 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:39 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:39 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 226 ms +2025-10-28 11:33:39 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:39 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:39 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:39 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:39 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:39 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:39 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@c88edd6, org.springframework.security.web.context.SecurityContextPersistenceFilter@55838818, org.springframework.security.web.header.HeaderWriterFilter@52cde476, org.springframework.security.web.authentication.logout.LogoutFilter@1ad09e6f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@8a9e6cd, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@357a4dfa, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3d9d8db8, org.springframework.security.web.session.SessionManagementFilter@72129a83, org.springframework.security.web.access.ExceptionTranslationFilter@1ce823f6, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@16caaa72] +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:39 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.561 seconds (JVM running for 958.659) +2025-10-28 11:33:39 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:33:53 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:33:53 [Thread-20] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:53 [Thread-20] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:53 [Thread-20] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:53 [Thread-20] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:53 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:53 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:53 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:54 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:54 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 30 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:54 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:54 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:54 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:54 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 302 ms +2025-10-28 11:33:54 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:54 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:54 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:54 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:54 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:54 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:54 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6a571847, org.springframework.security.web.context.SecurityContextPersistenceFilter@56477c8a, org.springframework.security.web.header.HeaderWriterFilter@6fc588, org.springframework.security.web.authentication.logout.LogoutFilter@22c540de, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1c814efa, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@623c9b67, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@791cf3ee, org.springframework.security.web.session.SessionManagementFilter@2341db62, org.springframework.security.web.access.ExceptionTranslationFilter@7ebd9f4b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2442f43d] +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:54 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.74 seconds (JVM running for 973.381) +2025-10-28 11:33:54 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:33:55 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:33:56 [Thread-24] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:33:56 [Thread-24] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:56 [Thread-24] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:33:56 [Thread-24] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:33:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:33:56 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:33:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:33:56 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:33:56 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 6 JPA repository interfaces. +2025-10-28 11:33:56 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:33:56 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:33:56 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:33:56 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 205 ms +2025-10-28 11:33:56 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:33:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:33:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:33:56 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:33:56 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:33:56 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:33:56 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1654d769, org.springframework.security.web.context.SecurityContextPersistenceFilter@22e18806, org.springframework.security.web.header.HeaderWriterFilter@4deb1886, org.springframework.security.web.authentication.logout.LogoutFilter@2e9786a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2a15f884, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3fafea68, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3c0f2dce, org.springframework.security.web.session.SessionManagementFilter@24c6e396, org.springframework.security.web.access.ExceptionTranslationFilter@5dbab8d6, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5b2f36b3] +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:33:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.524 seconds (JVM running for 975.574) +2025-10-28 11:33:56 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:34:28 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 5 class path changes (0 additions, 1 deletion, 4 modifications) +2025-10-28 11:34:28 [Thread-28] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:34:28 [Thread-28] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:28 [Thread-28] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:34:28 [Thread-28] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:34:29 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:34:29 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:34:29 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:34:29 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:34:29 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 5 JPA repository interfaces. +2025-10-28 11:34:29 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:34:29 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:34:29 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:34:29 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:34:29 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:34:29 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 167 ms +2025-10-28 11:34:29 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:34:29 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:34:29 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:34:29 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:34:29 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:34:29 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:29 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'markdownController': Unsatisfied dependency expressed through field 'markdownService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'markdownService': Unsatisfied dependency expressed through field 'markdownRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.qf.myafterprojecy.repository.MarkdownRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} +2025-10-28 11:34:29 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:29 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:34:29 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:34:29 [restartedMain] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:34:29 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 11:02:02 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MessageController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MessageController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problem: - Syntax error on token "/", delete this token +2025-10-28 11:34:29 [restartedMain] ERROR o.s.b.d.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Field markdownRepository in com.qf.myafterprojecy.service.MarkdownService required a bean of type 'com.qf.myafterprojecy.repository.MarkdownRepository' that could not be found. + +The injection point has the following annotations: + - @org.springframework.beans.factory.annotation.Autowired(required=true) + + +Action: + +Consider defining a bean of type 'com.qf.myafterprojecy.repository.MarkdownRepository' in your configuration. + +2025-10-28 11:34:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:34:31 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:34:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:34:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:34:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 18 ms. Found 5 JPA repository interfaces. +2025-10-28 11:34:32 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:34:32 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:34:32 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:34:32 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:34:32 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:34:32 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 205 ms +2025-10-28 11:34:32 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:34:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:34:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:34:32 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:34:32 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:34:32 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:32 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'markdownController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MarkdownController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type + +2025-10-28 11:34:32 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:34:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:34:32 [restartedMain] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:34:32 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - + +Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. +2025-10-28 11:34:32 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'markdownController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MarkdownController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) ~[spring-beans-5.3.23.jar:5.3.23] @@ -200,8244 +385,295 @@ org.springframework.beans.factory.BeanCreationException: Error creating bean wit at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MessageController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problem: - Syntax error on token "/", delete this token + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.6.13.jar:2.6.13] + at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) [classes/:na] + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_461] + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_461] + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_461] + at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_461] + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.6.13.jar:2.6.13] +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326) ~[spring-beans-5.3.23.jar:5.3.23] - ... 20 common frames omitted -Caused by: java.lang.Error: Unresolved compilation problem: - Syntax error on token "/", delete this token - - at com.qf.myafterprojecy.controller.MessageController.(MessageController.java:40) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na] - at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.23.jar:5.3.23] ... 22 common frames omitted -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:05 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:05 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:05 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:05 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:05 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 191 ms -2025-10-22 11:02:05 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:05 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:05 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:05 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:05 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - +Caused by: java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type -Using generated security password: febe7903-bd1a-4d1e-901a-81613f1f201b + at com.qf.myafterprojecy.controller.MarkdownController.(MarkdownController.java:4) ~[classes/:na] + at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_461] + at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_461] + at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_461] + at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_461] + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.23.jar:5.3.23] + ... 24 common frames omitted +2025-10-28 11:34:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:34:34 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:34:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:34:34 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:34:34 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 15 ms. Found 5 JPA repository interfaces. +2025-10-28 11:34:34 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:34:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:34:34 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:34:34 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:34:34 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:34:34 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 181 ms +2025-10-28 11:34:34 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:34:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:34:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:34:34 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:34:34 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:34:34 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:34 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'markdownController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MarkdownController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:05 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2d356a60, org.springframework.security.web.context.SecurityContextPersistenceFilter@6d9fee43, org.springframework.security.web.header.HeaderWriterFilter@11e2841e, org.springframework.security.web.authentication.logout.LogoutFilter@66b4eb4f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2a88a129, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@710c5638, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1250605f, org.springframework.security.web.access.ExceptionTranslationFilter@5d70c5ed, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@70c80367] -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.415 seconds (JVM running for 257.149) -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:05 CST 2025] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 208 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=208 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 208 -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [208] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [208] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [208] -2025-10-22 11:02:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [208] -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 208 -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID208: 成功=true -2025-10-22 11:02:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:05 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:07 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:07 [Thread-11] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:07 [Thread-11] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:07 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:07 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:07 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:08 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:08 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:08 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:08 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 156 ms -2025-10-22 11:02:08 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:08 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:08 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:08 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:08 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: ff6df160-4c09-4b46-992c-0ff030ca563a - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:08 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4ac5debc, org.springframework.security.web.context.SecurityContextPersistenceFilter@54e5a8b6, org.springframework.security.web.header.HeaderWriterFilter@7f6abc05, org.springframework.security.web.authentication.logout.LogoutFilter@3795773d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6bee9b69, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@646cd456, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@79c75e8c, org.springframework.security.web.access.ExceptionTranslationFilter@22b5b71d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1e15f624] -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.381 seconds (JVM running for 260.019) -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:08 CST 2025] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 209 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=209 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 209 -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [209] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [209] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [209] -2025-10-22 11:02:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [209] -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 209 -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID209: 成功=true -2025-10-22 11:02:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:08 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:17 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:17 [Thread-18] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:17 [Thread-18] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:17 [Thread-18] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:17 [Thread-18] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:17 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:17 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:17 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:17 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:17 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:18 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:18 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:18 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:18 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 187 ms -2025-10-22 11:02:18 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:18 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:18 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:18 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:18 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:18 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:18 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: cd8d71cb-2fbd-4d5f-9628-415b60dddcfd - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:18 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2757262b, org.springframework.security.web.context.SecurityContextPersistenceFilter@2633c693, org.springframework.security.web.header.HeaderWriterFilter@3fe9a7ad, org.springframework.security.web.authentication.logout.LogoutFilter@665529f9, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4ae30e3f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2c4c7512, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2ed40660, org.springframework.security.web.access.ExceptionTranslationFilter@7993fb5a, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@39532a7a] -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.461 seconds (JVM running for 270.001) -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:18 CST 2025] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 210 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=210 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 210 -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [210] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [210] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [210] -2025-10-22 11:02:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [210] -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 210 -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID210: 成功=true -2025-10-22 11:02:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:18 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:21 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:21 [Thread-22] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:21 [Thread-22] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:21 [Thread-22] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:21 [Thread-22] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:21 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:21 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:21 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:21 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:21 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:21 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:21 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 149 ms -2025-10-22 11:02:21 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:22 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:22 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:22 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:22 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:22 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:22 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 5f719d4f-b059-4d6a-88ee-e5dfe0b8d424 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:22 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@40312da7, org.springframework.security.web.context.SecurityContextPersistenceFilter@30751294, org.springframework.security.web.header.HeaderWriterFilter@7d46d1f, org.springframework.security.web.authentication.logout.LogoutFilter@170be2f5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5cc44f97, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2b6a8cda, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@21f8a7c0, org.springframework.security.web.access.ExceptionTranslationFilter@4e5731c4, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@44839c4c] -2025-10-22 11:02:22 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:22 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:22 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.359 seconds (JVM running for 273.85) -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:22 CST 2025] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 211 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=211 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 211 -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [211] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [211] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [211] -2025-10-22 11:02:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [211] -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 211 -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID211: 成功=true -2025-10-22 11:02:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:22 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:24 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:24 [Thread-26] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:24 [Thread-26] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:24 [Thread-26] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:24 [Thread-26] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:24 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:24 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:24 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:24 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:24 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:24 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:24 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:24 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:24 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:24 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:24 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 169 ms -2025-10-22 11:02:24 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:24 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:24 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:24 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:24 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:24 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:24 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 7c713b3f-56cc-4643-bf17-8ba72b5a3701 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:24 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@33159654, org.springframework.security.web.context.SecurityContextPersistenceFilter@545659cd, org.springframework.security.web.header.HeaderWriterFilter@3cf69832, org.springframework.security.web.authentication.logout.LogoutFilter@4d940377, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@625cdf30, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@23d584a6, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2020fb65, org.springframework.security.web.access.ExceptionTranslationFilter@55b28f42, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@55439ce6] -2025-10-22 11:02:25 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:25 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:25 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.389 seconds (JVM running for 276.713) -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:25 CST 2025] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 212 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=212 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 212 -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [212] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [212] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [212] -2025-10-22 11:02:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [212] -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 212 -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID212: 成功=true -2025-10-22 11:02:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:25 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:26 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:26 [Thread-30] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:26 [Thread-30] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:26 [Thread-30] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:26 [Thread-30] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:26 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:26 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:26 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:26 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:26 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 166 ms -2025-10-22 11:02:26 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:26 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:26 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:26 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:26 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 449e62c0-fdb1-42af-b134-de8ad413b062 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:26 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6dc49ce4, org.springframework.security.web.context.SecurityContextPersistenceFilter@18508ee6, org.springframework.security.web.header.HeaderWriterFilter@3362d9db, org.springframework.security.web.authentication.logout.LogoutFilter@44483e60, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3d80b818, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7dfa0e53, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@14d6b5d9, org.springframework.security.web.access.ExceptionTranslationFilter@6ce58bf0, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@117c0c14] -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.407 seconds (JVM running for 278.591) -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:26 CST 2025] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 213 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=213 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 213 -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [213] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [213] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [213] -2025-10-22 11:02:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [213] -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 213 -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID213: 成功=true -2025-10-22 11:02:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:26 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:02:30 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:02:30 [Thread-34] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:02:30 [Thread-34] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:30 [Thread-34] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:02:30 [Thread-34] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:02:30 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:02:30 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:02:30 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 11:02:30 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:02:30 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:02:30 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:02:30 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 161 ms -2025-10-22 11:02:30 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:02:30 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:02:30 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:02:30 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:02:30 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:02:30 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:02:30 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 5c7fa32d-0417-4fdf-be0e-bc548fc10b9a - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:02:30 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4639d9b8, org.springframework.security.web.context.SecurityContextPersistenceFilter@65827b40, org.springframework.security.web.header.HeaderWriterFilter@9305580, org.springframework.security.web.authentication.logout.LogoutFilter@6b563fa5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@596e60e2, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@16efd439, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7432d904, org.springframework.security.web.access.ExceptionTranslationFilter@5902d997, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2e9e50e5] -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.381 seconds (JVM running for 282.439) -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:02:30 CST 2025] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 214 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=214 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 214 -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [214] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [214] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [214] -2025-10-22 11:02:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [214] -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 214 -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID214: 成功=true -2025-10-22 11:02:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:02:30 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:04:33 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 11:04:33 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 11:04:33 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 11:06:02 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:06:02 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:06:02 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:06:02 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:06:02 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:06:02 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:06:02 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:06:02 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:06:02 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:06:02 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:06:02 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:06:02 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:06:02 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:06:02 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:06:02 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:06:05 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:06:05 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:06:05 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:06:05 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:06:05 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:06:05 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:06:05 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:06:05 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:06:05 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:06:05 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:06:05 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:06:05 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:06:05 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:06:05 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:06:05 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:07:27 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:07:28 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:07:28 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:07:28 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第二篇测试文章的内容] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-2.jpg] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [1] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试文章2] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [6] -2025-10-22 11:07:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [2] -2025-10-22 11:07:32 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:07:32 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:07:32 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:07:32 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:07:32 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:07:32 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:07:32 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:07:32 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:07:32 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:07:32 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:07:32 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:07:32 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:07:32 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:07:32 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:07:32 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:07:34 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:07:34 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:07:34 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:07:34 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [1] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试文章1] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [27] -2025-10-22 11:07:34 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [1] -2025-10-22 11:07:41 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:07:41 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:07:41 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:07:41 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:07:41 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:07:41 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:07:41 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:07:41 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:07:41 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:07:41 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:07:41 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:07:41 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:07:41 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:07:41 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:07:41 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:10:23 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:23 [Thread-38] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:23 [Thread-38] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 11:10:23 [Thread-38] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:23 [Thread-38] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:23 [Thread-38] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:23 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:23 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:23 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:23 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:23 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:23 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 172 ms -2025-10-22 11:10:23 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:23 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:23 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:23 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:23 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: e65b7589-2371-4943-a5d7-875d1fd24889 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:23 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1d775983, org.springframework.security.web.context.SecurityContextPersistenceFilter@107e275e, org.springframework.security.web.header.HeaderWriterFilter@489acb32, org.springframework.security.web.authentication.logout.LogoutFilter@2053b4fc, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3a778575, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@59f1c95e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@10b6bb97, org.springframework.security.web.access.ExceptionTranslationFilter@5c57e65b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@36bb1cb4] -2025-10-22 11:10:23 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:23 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.412 seconds (JVM running for 755.635) -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:23 CST 2025] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:23 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 215 -2025-10-22 11:10:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=215 -2025-10-22 11:10:24 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 215 -2025-10-22 11:10:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [215] -2025-10-22 11:10:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [215] -2025-10-22 11:10:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [215] -2025-10-22 11:10:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [215] -2025-10-22 11:10:24 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 215 -2025-10-22 11:10:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID215: 成功=true -2025-10-22 11:10:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:24 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:25 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:25 [Thread-42] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:25 [Thread-42] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:25 [Thread-42] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:25 [Thread-42] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:25 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:25 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:25 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:25 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:25 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:25 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:25 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 150 ms -2025-10-22 11:10:25 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:25 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:25 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:25 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:25 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: b9436163-f719-4b3e-828f-f41cfc94798b - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:25 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5b2155a0, org.springframework.security.web.context.SecurityContextPersistenceFilter@3892df6e, org.springframework.security.web.header.HeaderWriterFilter@76794912, org.springframework.security.web.authentication.logout.LogoutFilter@54cbe943, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@21d97315, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4601c0c8, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@524b443d, org.springframework.security.web.access.ExceptionTranslationFilter@247878ee, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6634a8bb] -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.352 seconds (JVM running for 757.443) -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:25 CST 2025] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 216 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=216 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 216 -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [216] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [216] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [216] -2025-10-22 11:10:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [216] -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 216 -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID216: 成功=true -2025-10-22 11:10:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:25 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:27 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:27 [Thread-46] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:27 [Thread-46] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:27 [Thread-46] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:27 [Thread-46] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:27 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:27 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:27 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:27 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:27 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:27 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:27 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 154 ms -2025-10-22 11:10:27 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:27 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:27 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:27 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:27 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:27 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:27 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: e9e39605-805a-4170-a4d2-ba8fd2828bcb - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:27 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@ac3df89, org.springframework.security.web.context.SecurityContextPersistenceFilter@3639727b, org.springframework.security.web.header.HeaderWriterFilter@75078532, org.springframework.security.web.authentication.logout.LogoutFilter@41d12438, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7469541c, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@756116e2, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@64d57825, org.springframework.security.web.access.ExceptionTranslationFilter@26a4e5a6, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@4725fdc6] -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.376 seconds (JVM running for 759.283) -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:27 CST 2025] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 217 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=217 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 217 -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [217] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [217] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [217] -2025-10-22 11:10:27 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [217] -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 217 -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID217: 成功=true -2025-10-22 11:10:27 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:27 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:30 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:30 [Thread-50] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:30 [Thread-50] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:30 [Thread-50] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:30 [Thread-50] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:30 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:30 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:30 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:30 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:30 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:30 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:30 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 165 ms -2025-10-22 11:10:30 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:30 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:30 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:30 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:30 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:30 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:30 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 0c0d917a-7851-4347-9c6d-2aade796a5e7 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:30 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4e021e40, org.springframework.security.web.context.SecurityContextPersistenceFilter@57a64162, org.springframework.security.web.header.HeaderWriterFilter@20a52461, org.springframework.security.web.authentication.logout.LogoutFilter@70ede8f7, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@440929a4, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1caaafa8, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2e3de408, org.springframework.security.web.access.ExceptionTranslationFilter@7d54b5f8, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@16a46140] -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.384 seconds (JVM running for 762.126) -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:30 CST 2025] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 218 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=218 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 218 -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [218] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [218] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [218] -2025-10-22 11:10:30 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [218] -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 218 -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID218: 成功=true -2025-10-22 11:10:30 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:30 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:31 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:31 [Thread-54] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:31 [Thread-54] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:31 [Thread-54] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:31 [Thread-54] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:31 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:31 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:32 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:32 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:32 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:32 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:32 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 153 ms -2025-10-22 11:10:32 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:32 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:32 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:32 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:32 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:32 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: cf5c72c3-710c-47c8-9ae5-65fdd1adc3cb - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:32 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@198df1bd, org.springframework.security.web.context.SecurityContextPersistenceFilter@6550a42c, org.springframework.security.web.header.HeaderWriterFilter@2020dde6, org.springframework.security.web.authentication.logout.LogoutFilter@5142f814, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@60c9d50, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@17ba7b3a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6029b893, org.springframework.security.web.access.ExceptionTranslationFilter@55a881fa, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1a03ee1d] -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.363 seconds (JVM running for 763.957) -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:32 CST 2025] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 219 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=219 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 219 -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [219] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [219] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [219] -2025-10-22 11:10:32 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [219] -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 219 -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID219: 成功=true -2025-10-22 11:10:32 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:32 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:33 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:33 [Thread-58] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:33 [Thread-58] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:33 [Thread-58] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:33 [Thread-58] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:33 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:33 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:33 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:33 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:33 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:33 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:33 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:33 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:33 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 141 ms -2025-10-22 11:10:33 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:33 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:33 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:33 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:33 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:33 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:34 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: ff94aa3a-2dc4-46f9-a690-538b8aad5972 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:34 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@74104e70, org.springframework.security.web.context.SecurityContextPersistenceFilter@25abe655, org.springframework.security.web.header.HeaderWriterFilter@2777469d, org.springframework.security.web.authentication.logout.LogoutFilter@2c17d188, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4c50e5ba, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4b2af81b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@35d45fa2, org.springframework.security.web.access.ExceptionTranslationFilter@3cb77942, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1fbe2ca6] -2025-10-22 11:10:34 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:34 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.34 seconds (JVM running for 765.763) -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:34 CST 2025] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 220 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=220 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 220 -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [220] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [220] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [220] -2025-10-22 11:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [220] -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 220 -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID220: 成功=true -2025-10-22 11:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:34 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:40 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:40 [Thread-62] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:40 [Thread-62] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:40 [Thread-62] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:40 [Thread-62] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:40 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:40 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:40 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:40 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:40 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:40 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:40 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:40 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:40 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:40 [restartedMain] INFO o.a.c.c.C.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:40 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 141 ms -2025-10-22 11:10:40 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:40 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:40 [restartedMain] ERROR o.s.o.j.LocalContainerEntityManagerFactoryBean - Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister -2025-10-22 11:10:40 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister -2025-10-22 11:10:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:40 [restartedMain] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:40 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - +2025-10-28 11:34:34 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:34:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:34:34 [restartedMain] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:34:34 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 11:10:40 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.23.jar:5.3.23] - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.23.jar:5.3.23] +2025-10-28 11:34:34 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'markdownController' defined in file [E:\MyWebProject\MyAfterProjecy\target\classes\com\qf\myafterprojecy\controller\MarkdownController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type + + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334) ~[spring-beans-5.3.23.jar:5.3.23] + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) ~[spring-beans-5.3.23.jar:5.3.23] + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.23.jar:5.3.23] - at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.23.jar:5.3.23] - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.23.jar:5.3.23] + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.23.jar:5.3.23] + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.23.jar:5.3.23] - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.23.jar:5.3.23] - ... 19 common frames omitted -Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister - at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:182) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.23.jar:5.3.23] - ... 23 common frames omitted -Caused by: org.hibernate.InstantiationException: could not instantiate test object : com.qf.myafterprojecy.pojo.Message - at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:43) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.internal.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:68) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.tuple.PropertyFactory.buildIdentifierAttribute(PropertyFactory.java:65) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:142) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:613) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:126) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na] - at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 31 common frames omitted -Caused by: java.lang.reflect.InvocationTargetException: null - at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] - at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na] - at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:40) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 40 common frames omitted -Caused by: java.lang.Error: Unresolved compilation problem: - Syntax error on token "public", delete this token - - at com.qf.myafterprojecy.pojo.Message.(Message.java:37) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na] - ... 43 common frames omitted -2025-10-22 11:10:45 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:45 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:45 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:45 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:45 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:45 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:45 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:45 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:45 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:45 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:45 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 244 ms -2025-10-22 11:10:45 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:45 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:45 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:45 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:46 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:46 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:46 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: a813fb9d-b4c7-486b-8200-83d01f9d4e39 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:46 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@67868d7f, org.springframework.security.web.context.SecurityContextPersistenceFilter@62f2e82e, org.springframework.security.web.header.HeaderWriterFilter@938123, org.springframework.security.web.authentication.logout.LogoutFilter@14a7444f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@45aa8c14, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7d676fd3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3e0fdf69, org.springframework.security.web.access.ExceptionTranslationFilter@f86ee7c, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@71ddec7] -2025-10-22 11:10:46 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:46 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:46 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.518 seconds (JVM running for 777.852) -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:46 CST 2025] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - [测试用户] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [null] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 221 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=221 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 221 -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [221] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [221] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [221] -2025-10-22 11:10:46 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [221] -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 221 -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID221: 成功=true -2025-10-22 11:10:46 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:46 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:47 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:47 [Thread-66] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:47 [Thread-66] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:47 [Thread-66] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:47 [Thread-66] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:47 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:47 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:47 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:47 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:47 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:47 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:47 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:47 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:47 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:47 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:47 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 153 ms -2025-10-22 11:10:47 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:47 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:47 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:47 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:47 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:47 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:47 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: f7817bf4-1dc1-4d24-bb40-1e0e7f487fb3 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:47 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5e4661c8, org.springframework.security.web.context.SecurityContextPersistenceFilter@5a5ff1e, org.springframework.security.web.header.HeaderWriterFilter@53334de7, org.springframework.security.web.authentication.logout.LogoutFilter@51017205, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2bcd8cf8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@32e310b4, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@608a1242, org.springframework.security.web.access.ExceptionTranslationFilter@2607f61b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2c2c6aca] -2025-10-22 11:10:47 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:48 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:48 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.369 seconds (JVM running for 779.688) -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:48 CST 2025] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 222 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=222 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 222 -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [222] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [222] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [222] -2025-10-22 11:10:48 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [222] -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 222 -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID222: 成功=true -2025-10-22 11:10:48 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:48 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:49 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:49 [Thread-73] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:49 [Thread-73] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:49 [Thread-73] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:49 [Thread-73] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:49 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:49 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:49 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:49 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:49 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:49 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:49 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 156 ms -2025-10-22 11:10:49 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:49 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:49 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:49 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:49 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:49 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:49 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: bdeacd01-cc27-45ce-85ed-e0e1a6db8ba5 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:49 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@38d61aa, org.springframework.security.web.context.SecurityContextPersistenceFilter@1c4e3133, org.springframework.security.web.header.HeaderWriterFilter@2d0b022, org.springframework.security.web.authentication.logout.LogoutFilter@1995e807, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@700f0a42, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@736977f5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5fc42b7b, org.springframework.security.web.access.ExceptionTranslationFilter@75086b0, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@173a04f4] -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.365 seconds (JVM running for 781.504) -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:49 CST 2025] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 223 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=223 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 223 -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [223] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [223] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [223] -2025-10-22 11:10:49 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [223] -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 223 -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID223: 成功=true -2025-10-22 11:10:49 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:49 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:52 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:52 [Thread-77] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:52 [Thread-77] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:52 [Thread-77] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:52 [Thread-77] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:52 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:52 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:52 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:52 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:52 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:52 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:52 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 141 ms -2025-10-22 11:10:52 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:52 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:52 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:52 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:52 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:52 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:52 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: bf7ffc5d-57c8-47fb-9bf1-39dd330b4ce3 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:52 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6dbd2747, org.springframework.security.web.context.SecurityContextPersistenceFilter@67d228aa, org.springframework.security.web.header.HeaderWriterFilter@43746b3e, org.springframework.security.web.authentication.logout.LogoutFilter@75fc7dc3, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@48f2e0f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@63d038ad, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4b64e301, org.springframework.security.web.access.ExceptionTranslationFilter@58c469d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@13ec78ed] -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.33 seconds (JVM running for 784.306) -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:52 CST 2025] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 224 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=224 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 224 -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [224] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [224] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [224] -2025-10-22 11:10:52 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [224] -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 224 -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID224: 成功=true -2025-10-22 11:10:52 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:52 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:10:59 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:10:59 [Thread-81] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:10:59 [Thread-81] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:59 [Thread-81] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:10:59 [Thread-81] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:10:59 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:10:59 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:10:59 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:10:59 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:10:59 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:10:59 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:10:59 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 163 ms -2025-10-22 11:10:59 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:10:59 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:10:59 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:10:59 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:10:59 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:10:59 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:10:59 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 39ed9d57-6597-4918-ab7a-280e9cd77191 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:10:59 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@32be7d6b, org.springframework.security.web.context.SecurityContextPersistenceFilter@253e60be, org.springframework.security.web.header.HeaderWriterFilter@bf0f8cb, org.springframework.security.web.authentication.logout.LogoutFilter@45b0d11d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@76bde237, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1f67eddf, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2f4b4b68, org.springframework.security.web.access.ExceptionTranslationFilter@5767da8d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47b01154] -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.373 seconds (JVM running for 791.196) -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:10:59 CST 2025] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 225 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=225 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 225 -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [225] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [225] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [225] -2025-10-22 11:10:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [225] -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 225 -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID225: 成功=true -2025-10-22 11:10:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:10:59 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:11:00 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:11:00 [Thread-85] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:11:00 [Thread-85] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:00 [Thread-85] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:11:00 [Thread-85] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:11:00 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:11:00 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:11:00 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:11:01 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:11:01 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:11:01 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:11:01 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:11:01 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:11:01 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 177 ms -2025-10-22 11:11:01 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:11:01 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:11:01 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:11:01 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:11:01 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:11:01 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:01 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: a936902f-bf16-4193-a6c0-ea51b597e61f - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:11:01 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@71360aa7, org.springframework.security.web.context.SecurityContextPersistenceFilter@59481b51, org.springframework.security.web.header.HeaderWriterFilter@7bc2ce66, org.springframework.security.web.authentication.logout.LogoutFilter@19e968cb, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1ecd8c78, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6dbe2b2a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@76b8adc4, org.springframework.security.web.access.ExceptionTranslationFilter@59655caf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@368a6e3d] -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.386 seconds (JVM running for 793.046) -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:11:01 CST 2025] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 226 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=226 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 226 -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [226] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [226] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [226] -2025-10-22 11:11:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [226] -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 226 -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID226: 成功=true -2025-10-22 11:11:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:11:01 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:11:04 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:11:04 [Thread-89] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:11:04 [Thread-89] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:04 [Thread-89] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:11:04 [Thread-89] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:11:04 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:11:04 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:11:04 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:11:04 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:11:04 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 11:11:04 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:11:04 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:11:04 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:11:04 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:11:05 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:11:05 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 151 ms -2025-10-22 11:11:05 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:11:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:11:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:11:05 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:11:05 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:11:05 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:05 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: f05d93a7-1efc-4e6b-9c71-03141e7f1eb2 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:11:05 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@79092fba, org.springframework.security.web.context.SecurityContextPersistenceFilter@629bfc56, org.springframework.security.web.header.HeaderWriterFilter@411eaa7, org.springframework.security.web.authentication.logout.LogoutFilter@4abf1056, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4971e7e5, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7c34b250, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6c3af331, org.springframework.security.web.access.ExceptionTranslationFilter@19d594b7, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@49cf8078] -2025-10-22 11:11:05 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:11:05 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:11:05 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.369 seconds (JVM running for 796.893) -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:11:05 CST 2025] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 227 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=227 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 227 -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [227] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [227] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [227] -2025-10-22 11:11:05 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [227] -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 227 -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID227: 成功=true -2025-10-22 11:11:05 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:11:05 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:11:07 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:11:07 [Thread-93] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:11:07 [Thread-93] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:07 [Thread-93] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:11:07 [Thread-93] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:11:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:11:07 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:11:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:11:07 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:11:07 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:11:07 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:11:07 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:11:07 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:11:07 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:11:07 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:11:07 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 150 ms -2025-10-22 11:11:07 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:11:07 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:11:07 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:11:07 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:11:07 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:11:07 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:11:07 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: d02405dc-0c28-4eb0-9752-c1474b1cd66b - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:11:07 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@61704f7b, org.springframework.security.web.context.SecurityContextPersistenceFilter@4b3fea48, org.springframework.security.web.header.HeaderWriterFilter@78abc4d8, org.springframework.security.web.authentication.logout.LogoutFilter@52c64922, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@d9bd639, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@403413d9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@287f537b, org.springframework.security.web.access.ExceptionTranslationFilter@45111e65, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1b8f56d8] -2025-10-22 11:11:08 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:11:08 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:11:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.341 seconds (JVM running for 799.705) -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:11:08 CST 2025] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 228 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=228 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 228 -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [228] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [228] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [228] -2025-10-22 11:11:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [228] -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 228 -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID228: 成功=true -2025-10-22 11:11:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:11:08 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:12:36 [http-nio-8080-exec-2] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 11:12:36 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 11:12:36 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 11:12:36 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:12:36 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:12:36 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:12:36 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:12:36 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:12:36 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:12:36 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:12:36 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:12:36 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:12:36 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:12:36 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:12:36 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:12:36 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:12:36 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:12:36 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:13:42 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:13:42 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:13:42 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:13:42 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:13:42 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:13:42 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:13:42 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:13:42 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:13:42 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:13:42 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:13:42 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:13:42 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:13:42 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:13:42 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:13:42 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:14:22 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:14:22 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:14:22 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:22 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:14:22 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:14:22 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:22 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:14:22 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:14:22 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:14:22 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:14:22 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:14:22 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:14:22 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:14:22 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:22 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:14:24 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:24 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:24 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:26 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:26 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:14:26 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:14:26 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:14:26 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:14:26 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:14:26 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:26 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:14:26 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:14:26 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:14:26 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:14:26 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:14:26 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:26 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:14:26 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:14:32 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:32 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:14:32 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:32 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:14:32 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:14:32 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:14:32 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:14:32 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:14:32 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:14:32 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:14:32 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:32 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:14:32 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:14:32 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:14:32 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:14:48 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:48 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:48 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:52 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:14:52 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:14:52 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:14:52 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:14:52 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:14:52 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:14:52 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:14:52 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:14:52 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:14:52 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:14:52 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:14:52 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:14:52 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:14:52 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:14:52 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:16:04 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:16:04 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:16:04 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:16:39 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:16:39 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:16:39 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:16:39 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:16:39 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:16:39 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:16:39 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:16:39 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:16:39 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:16:39 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:16:39 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:16:39 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:16:39 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:16:39 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:16:39 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:16:42 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:16:42 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:16:42 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:16:42 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:16:42 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:16:42 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:16:42 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:16:42 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:16:42 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:16:42 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:16:42 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:16:42 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:16:42 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:16:42 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:16:42 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:18:39 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:18:39 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:18:39 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:23 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:23 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:23 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:19:23 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:19:23 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:19:23 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:19:23 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:19:23 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:19:23 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:19:23 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:23 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:19:23 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:19:23 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:19:23 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:19:23 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:19:24 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:24 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:24 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:40 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:40 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:40 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:44 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:44 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:44 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:48 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:48 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:48 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:51 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:51 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:51 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:19:58 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:19:58 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:19:58 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:00 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:00 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:00 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:03 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:03 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:03 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:07 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:07 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:20:07 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:20:07 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:20:07 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:20:07 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:07 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:20:07 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:20:07 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:20:07 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:20:07 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:07 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:20:07 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:20:07 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:20:07 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:20:10 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:20:10 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:20:10 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:10 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:20:10 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:20:10 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:20:10 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:10 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:20:10 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:20:10 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:20:10 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:20:10 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:10 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:20:10 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:20:10 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:20:12 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:12 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:12 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:28 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:28 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:28 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:20:56 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:20:56 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:20:56 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:21:04 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:21:04 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:21:04 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:21:04 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:21:04 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:21:04 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:21:04 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:21:04 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:21:04 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:21:04 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:21:04 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:21:04 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:21:04 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:21:04 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:21:04 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:21:15 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:21:15 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:21:15 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:21:15 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:21:15 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:21:15 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:21:15 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:21:15 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:21:15 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:21:15 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:21:15 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:21:15 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:21:15 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:21:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:21:15 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:21:20 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:21:20 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:21:20 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:21:20 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:21:20 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:21:20 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:21:20 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:21:20 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:21:20 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:21:20 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:21:20 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:21:20 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:21:20 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:21:20 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:21:20 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:21:25 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:21:25 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:21:25 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:21:25 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:21:25 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:21:25 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:21:25 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:21:25 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:21:25 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:21:25 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:21:25 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:21:25 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:21:25 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:21:25 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:21:25 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:21:52 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:21:52 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:21:52 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:21:52 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:21:52 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:21:52 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:21:52 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:21:52 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:21:52 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:21:52 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:21:52 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:21:52 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:21:52 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:21:52 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:21:52 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:07 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:07 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:07 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:16 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:16 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:16 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:18 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:18 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:18 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:21 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:21 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:21 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:24 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:24 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:24 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:28 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:28 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:28 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:32 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:32 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:22:32 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:22:32 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:22:32 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:32 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:22:32 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:22:32 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:22:32 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:22:32 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:22:32 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:22:32 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:32 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:22:32 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:22:32 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:22:46 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:46 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:22:46 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:46 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:22:46 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:22:46 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:22:46 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:22:46 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:22:46 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:46 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:22:46 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:22:46 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:22:46 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:22:46 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:22:46 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:22:56 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:22:56 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:22:56 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:22:56 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:22:56 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:22:56 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:22:56 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:22:56 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:22:56 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:22:56 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:22:56 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:22:56 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:22:56 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:22:56 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:22:56 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:24 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:24 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:24 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:24 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:24 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:24 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:24 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:24 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:24 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:24 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:24 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:24 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:23:24 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:24 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:24 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:24 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:24 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:24 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:24 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:24 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:24 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:24 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:24 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:23:24 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:24 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:24 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:24 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:24 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:25 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:25 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:25 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:30 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:30 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:30 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:30 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:30 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:30 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:30 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:30 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:30 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:30 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:30 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:30 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:23:30 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:30 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:30 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:37 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:37 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:37 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:37 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:37 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:37 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:37 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:37 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:37 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:37 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:37 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:37 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:37 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:37 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:37 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:23:48 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:48 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:48 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:48 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:48 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:48 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:48 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:48 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:48 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:48 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:48 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:48 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:48 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:48 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:23:48 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:51 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:23:51 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:23:51 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:23:51 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:23:51 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:23:51 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:23:51 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:23:51 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:23:51 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:23:51 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:23:51 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:23:51 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:23:51 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:23:51 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:23:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:26:41 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:26:41 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:26:41 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:26:41 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:26:41 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:26:41 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:26:41 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:26:41 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:26:41 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:26:41 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:26:41 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:26:41 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:26:41 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:26:41 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:26:41 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:26:45 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:26:45 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:26:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:26:45 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:26:45 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:26:45 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:26:45 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:26:45 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:26:45 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:26:45 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:26:45 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:26:45 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:26:45 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:26:45 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:26:45 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:27:02 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:27:02 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:27:02 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:27:02 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:27:02 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:27:02 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:27:02 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:27:02 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:27:02 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:27:02 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:27:02 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:27:02 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:27:02 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:27:02 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:27:02 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:28:32 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:28:32 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:28:32 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:28:32 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:28:32 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:28:32 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:28:32 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:28:32 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:28:32 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:28:32 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:28:32 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:28:32 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:28:32 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:28:32 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:28:32 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:29:54 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 4 class path changes (0 additions, 0 deletions, 4 modifications) -2025-10-22 11:29:54 [Thread-97] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:29:54 [Thread-97] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 11:29:54 [Thread-97] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:54 [Thread-97] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:29:54 [Thread-97] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:29:54 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:29:54 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:29:54 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:29:54 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:29:54 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 11:29:54 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:29:54 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:29:54 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:29:54 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:29:54 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:29:54 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 184 ms -2025-10-22 11:29:55 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:29:55 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:29:55 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:29:55 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:29:55 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:29:55 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:55 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 808aa6dd-fd1e-48eb-83d8-52176511c9b7 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:29:55 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6d035f4b, org.springframework.security.web.context.SecurityContextPersistenceFilter@712cf810, org.springframework.security.web.header.HeaderWriterFilter@22324a1, org.springframework.security.web.authentication.logout.LogoutFilter@6f0f0163, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3659003f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1c4e0e17, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@59e057f5, org.springframework.security.web.access.ExceptionTranslationFilter@12970556, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2dd4cdc8] -2025-10-22 11:29:55 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:29:55 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:29:55 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.435 seconds (JVM running for 1926.907) -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:29:55 CST 2025] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 229 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=229 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 229 -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [229] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [229] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [229] -2025-10-22 11:29:55 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [229] -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 229 -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID229: 成功=true -2025-10-22 11:29:55 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:29:55 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:29:57 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:29:57 [Thread-101] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:29:57 [Thread-101] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:57 [Thread-101] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:29:57 [Thread-101] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:29:57 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:29:57 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:29:57 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:29:57 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:29:57 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 4 JPA repository interfaces. -2025-10-22 11:29:57 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:29:57 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:29:57 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:29:57 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:29:57 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:29:57 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 151 ms -2025-10-22 11:29:57 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:29:57 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:29:57 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:29:57 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:29:57 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:29:57 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:58 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 4ba20fae-2897-42a5-b565-d90d495a55d3 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:29:58 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1191a8d9, org.springframework.security.web.context.SecurityContextPersistenceFilter@3e881feb, org.springframework.security.web.header.HeaderWriterFilter@e64f55e, org.springframework.security.web.authentication.logout.LogoutFilter@71f1debb, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@87861be, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@269f3060, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@14654ccf, org.springframework.security.web.access.ExceptionTranslationFilter@148759c8, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@52b83c40] -2025-10-22 11:29:58 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:29:58 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:29:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.34 seconds (JVM running for 1929.748) -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:29:58 CST 2025] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 230 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=230 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 230 -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [230] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [230] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [230] -2025-10-22 11:29:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [230] -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 230 -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID230: 成功=true -2025-10-22 11:29:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:29:58 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:29:59 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 11:29:59 [Thread-105] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 11:29:59 [Thread-105] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:59 [Thread-105] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 11:29:59 [Thread-105] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 11:29:59 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 11:29:59 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 11:29:59 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 11:29:59 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 11:29:59 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 11:29:59 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 11:29:59 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 148 ms -2025-10-22 11:29:59 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 11:29:59 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 11:29:59 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 11:29:59 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 11:29:59 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 11:29:59 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 11:29:59 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 73bb3a94-229a-4c2d-8f85-bb4d39350de4 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 11:29:59 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2035d64c, org.springframework.security.web.context.SecurityContextPersistenceFilter@1ebbe848, org.springframework.security.web.header.HeaderWriterFilter@11855141, org.springframework.security.web.authentication.logout.LogoutFilter@4df5ccf2, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@661c9616, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3779cc6c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@51fe20d5, org.springframework.security.web.access.ExceptionTranslationFilter@44e2badb, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3580cf2f] -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.338 seconds (JVM running for 1931.55) -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 2 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 2 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 1 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 2 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=2 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=2 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=1 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 11:29:59 CST 2025] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 231 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=231 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 231 -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [231] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [231] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [231] -2025-10-22 11:29:59 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [231] -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 231 -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID231: 成功=true -2025-10-22 11:29:59 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 11:29:59 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 11:30:16 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 11:30:16 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 11:30:16 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 0 ms -2025-10-22 11:30:16 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:30:16 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:30:16 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:30:16 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:30:16 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:30:16 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:30:16 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:30:16 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:30:16 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:30:16 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:30:16 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:30:16 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:30:16 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:30:16 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:30:16 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:32:23 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:32:23 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:32:23 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:32:23 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:32:23 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:32:23 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:32:23 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:32:23 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:32:23 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:32:23 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:32:23 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:32:23 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:32:23 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:32:23 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:32:23 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:34:31 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:34:31 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:34:31 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:34:31 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:34:31 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:34:31 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:34:31 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:34:31 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:34:31 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:34:31 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:34:31 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:34:31 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:34:31 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:34:31 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:34:31 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:35:58 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 11:35:58 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 11:35:58 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:35:58 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 11:35:58 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 11:35:58 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:35:58 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 11:35:58 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 11:35:58 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:35:58 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 11:35:58 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 11:35:58 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:35:58 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 11:35:58 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 11:35:58 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 11:36:44 [http-nio-8080-exec-2] INFO c.q.m.controller.CategoryController - 接收获取所有分类列表的请求 -2025-10-22 11:36:44 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=4, 属性名称=行业动态 -2025-10-22 11:36:44 [http-nio-8080-exec-9] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=1, 属性名称=技术分享 -2025-10-22 11:36:44 [http-nio-8080-exec-1] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=3, 属性名称=学习笔记 -2025-10-22 11:36:44 [http-nio-8080-exec-10] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=2, 属性名称=生活随笔 -2025-10-22 11:36:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:36:44 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:44 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:36:44 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:36:44 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [技术分享] -2025-10-22 11:36:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [生活随笔] -2025-10-22 11:36:44 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [学习笔记] -2025-10-22 11:36:44 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [行业动态] -2025-10-22 11:36:44 [http-nio-8080-exec-3] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=4 -2025-10-22 11:36:44 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=1 -2025-10-22 11:36:44 [http-nio-8080-exec-6] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=3 -2025-10-22 11:36:44 [http-nio-8080-exec-8] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=2 -2025-10-22 11:36:44 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:36:44 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:36:44 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:44 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:36:44 [http-nio-8080-exec-8] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:44 [http-nio-8080-exec-3] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:44 [http-nio-8080-exec-6] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:44 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:44 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:46 [http-nio-8080-exec-2] INFO c.q.m.controller.CategoryController - 接收获取所有分类列表的请求 -2025-10-22 11:36:46 [http-nio-8080-exec-1] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=1, 属性名称=技术分享 -2025-10-22 11:36:46 [http-nio-8080-exec-10] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=2, 属性名称=生活随笔 -2025-10-22 11:36:46 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=4, 属性名称=行业动态 -2025-10-22 11:36:46 [http-nio-8080-exec-9] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=3, 属性名称=学习笔记 -2025-10-22 11:36:46 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:46 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:36:46 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [技术分享] -2025-10-22 11:36:46 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [生活随笔] -2025-10-22 11:36:46 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:36:46 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:36:46 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [学习笔记] -2025-10-22 11:36:46 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [行业动态] -2025-10-22 11:36:46 [http-nio-8080-exec-8] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=3 -2025-10-22 11:36:46 [http-nio-8080-exec-6] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=2 -2025-10-22 11:36:46 [http-nio-8080-exec-3] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=1 -2025-10-22 11:36:46 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=4 -2025-10-22 11:36:46 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 11:36:46 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 11:36:46 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 11:36:46 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:46 [http-nio-8080-exec-8] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:46 [http-nio-8080-exec-5] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:46 [http-nio-8080-exec-6] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 11:36:46 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:46 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 11:36:50 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:36:50 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:37:52 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:37:52 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:54:07 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:54:07 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:55:43 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:55:43 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:57:21 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:57:21 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:57:27 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:57:27 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 11:58:03 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 11:58:03 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:00:38 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:00:38 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:01:11 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:01:11 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:02:04 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:02:04 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:02:05 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:02:05 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:02:41 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:02:41 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:05:10 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:05:10 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:05:47 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:05:47 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:05:59 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:05:59 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:06:35 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收创建消息的请求: 11 -2025-10-22 12:06:35 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 保存消息: 11 -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [11] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 12:06:35 CST 2025] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [1dwad@qq.com] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [11] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 12:06:35 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 12:06:35 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 消息保存成功: 232 -2025-10-22 12:06:35 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:06:35 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:06:39 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:06:39 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:06:46 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:06:46 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:07:18 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:07:18 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:07:19 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:07:19 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:07:21 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 12:07:21 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 12:07:26 [http-nio-8080-exec-9] INFO c.q.m.controller.CategoryController - 接收获取所有分类列表的请求 -2025-10-22 12:07:26 [http-nio-8080-exec-6] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=3, 属性名称=学习笔记 -2025-10-22 12:07:26 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=2, 属性名称=生活随笔 -2025-10-22 12:07:26 [http-nio-8080-exec-8] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=4, 属性名称=行业动态 -2025-10-22 12:07:26 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - 接收检查分类属性是否存在的请求: 分类ID=1, 属性名称=技术分享 -2025-10-22 12:07:26 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 12:07:26 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [学习笔记] -2025-10-22 12:07:26 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 12:07:26 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 12:07:26 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:07:26 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [生活随笔] -2025-10-22 12:07:26 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [行业动态] -2025-10-22 12:07:26 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [技术分享] -2025-10-22 12:07:26 [http-nio-8080-exec-3] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=2 -2025-10-22 12:07:26 [http-nio-8080-exec-7] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=3 -2025-10-22 12:07:26 [http-nio-8080-exec-2] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=4 -2025-10-22 12:07:26 [http-nio-8080-exec-1] INFO c.q.m.c.CategoryAttributeController - 接收根据ID获取分类属性的请求: ID=1 -2025-10-22 12:07:26 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:07:26 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 12:07:26 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 12:07:26 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 12:07:26 [http-nio-8080-exec-2] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 12:07:26 [http-nio-8080-exec-7] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 12:07:26 [http-nio-8080-exec-3] ERROR c.q.m.s.CategoryAttributeService - 获取分类属性失败: 分类属性不存在 -2025-10-22 12:07:26 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:07:26 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:07:27 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 12:07:27 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 12:07:27 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 12:07:27 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 12:07:27 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 12:07:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 12:07:27 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 12:07:27 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 12:07:27 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 12:07:27 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 12:07:27 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 12:07:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 12:07:27 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 12:07:27 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 12:07:27 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 13:27:28 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:27:28 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:27:28 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:27:28 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [28] -2025-10-22 13:27:28 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:30:43 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:30:43 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:30:43 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:36:05 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:36:05 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:36:05 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:36:05 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 13:36:05 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 13:36:05 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 13:36:05 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 13:36:05 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 13:36:05 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 13:36:05 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 13:36:05 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 13:36:05 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 13:36:05 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 13:36:05 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 13:36:05 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 13:43:54 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:43:54 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:43:54 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:43:54 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [29] -2025-10-22 13:43:54 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:44:16 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:44:16 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:44:16 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:44:21 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:44:21 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:44:21 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:44:21 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [30] -2025-10-22 13:44:21 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:50:15 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:50:15 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:50:15 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:50:15 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [31] -2025-10-22 13:50:15 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:51:50 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:51:50 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:51:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:52:11 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:52:11 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:52:11 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:52:11 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [32] -2025-10-22 13:52:11 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:53:09 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:09 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:53:09 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:09 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [33] -2025-10-22 13:53:09 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:53:24 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:24 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:53:24 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:24 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [34] -2025-10-22 13:53:24 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:53:45 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:45 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:53:45 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:45 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [35] -2025-10-22 13:53:45 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:53:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:50 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:53:50 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:53:50 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [36] -2025-10-22 13:53:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:54:38 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:54:38 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:54:38 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:54:38 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [37] -2025-10-22 13:54:38 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:55:51 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:55:51 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:55:51 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:55:51 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [38] -2025-10-22 13:55:51 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 13:56:24 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:56:24 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 13:56:24 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:56:24 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [39] -2025-10-22 13:56:24 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:00:50 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:00:50 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:00:50 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:00:50 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [40] -2025-10-22 14:00:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:01:08 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:01:08 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:01:08 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [41] -2025-10-22 14:01:27 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:01:27 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [42] -2025-10-22 14:01:27 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:02:19 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:02:19 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:02:19 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:02:19 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 14:02:19 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 14:02:19 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 14:02:19 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:02:19 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:02:19 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:02:19 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 14:02:19 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 14:02:19 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 14:02:19 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 14:02:19 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 14:02:19 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 14:02:30 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:02:30 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:02:30 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:02:30 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:02:30 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:02:30 [http-nio-8080-exec-1] ERROR c.q.m.service.ArticleService - 增加文章浏览量失败: Cannot invoke "java.lang.Integer.intValue()" because the return value of "com.qf.myafterprojecy.pojo.Article.getViewCount()" is null -2025-10-22 14:02:33 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:02:33 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:02:33 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:02:33 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 14:02:33 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 14:02:33 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 14:02:33 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:02:33 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:02:33 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:02:33 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 14:02:33 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 14:02:33 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 14:02:33 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 14:02:33 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 14:02:33 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 14:02:59 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:02:59 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:02:59 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:02:59 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [43] -2025-10-22 14:02:59 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:03:33 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:03:33 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:03:33 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:44 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:44 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:44 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:08:44 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [44] -2025-10-22 14:08:44 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:08:46 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:08:46 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:08:49 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:08:49 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:08:49 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:49 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 14:08:49 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 14:08:49 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 14:08:49 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:08:49 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:08:49 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:08:49 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 14:08:49 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 14:08:49 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 14:08:49 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 14:08:49 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 14:08:49 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 14:08:50 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:50 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:08:50 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:08:50 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [0] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是第一篇测试文章的内容] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test-img-1.jpg] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [INTEGER] - [1] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [VARCHAR] - [测试文章1] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [TIMESTAMP] - [2025-10-10T16:52:40.934615] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [9] as [INTEGER] - [45] -2025-10-22 14:08:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [10] as [INTEGER] - [1] -2025-10-22 14:08:54 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:08:54 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:08:57 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:08:57 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:08:57 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:08:57 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 14:08:57 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 14:08:57 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 14:08:57 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:08:57 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:08:57 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:08:57 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 14:08:57 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 14:08:57 [http-nio-8080-exec-9] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 14:08:57 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 14:08:57 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 14:08:57 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 14:09:00 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:09:00 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:09:14 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收创建消息的请求: dwa -2025-10-22 14:09:14 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 保存消息: dwa -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [null] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [1] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:09:14 CST 2025] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [aabelavasdev@outlook.com] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [dwa] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:09:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:09:14 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 消息保存成功: 233 -2025-10-22 14:09:14 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:09:14 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:25 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:25 [Thread-109] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:25 [Thread-109] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 14:10:25 [Thread-109] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:25 [Thread-109] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:25 [Thread-109] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:25 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:26 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:26 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:26 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:26 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 174 ms -2025-10-22 14:10:26 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:26 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:26 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:26 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:26 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: df645803-2ced-42c5-b7ea-09f08427bcb5 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:26 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1c1a124e, org.springframework.security.web.context.SecurityContextPersistenceFilter@5d350df2, org.springframework.security.web.header.HeaderWriterFilter@4e8ea19a, org.springframework.security.web.authentication.logout.LogoutFilter@a21e9b4, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1ce1853b, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@546f5c6e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1f72d3df, org.springframework.security.web.access.ExceptionTranslationFilter@6d64a445, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@612dbe83] -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.413 seconds (JVM running for 11558.048) -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:26 CST 2025] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 234 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=234 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 234 -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [234] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [234] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [234] -2025-10-22 14:10:26 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [234] -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 234 -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID234: 成功=true -2025-10-22 14:10:26 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:26 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:10:33 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:33 [Thread-113] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:33 [Thread-113] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:33 [Thread-113] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:33 [Thread-113] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:33 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:33 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:34 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:34 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:34 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:34 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:34 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 150 ms -2025-10-22 14:10:34 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:34 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:34 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:34 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:34 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 6d075288-30dc-4c84-aaee-746e4f50dfb1 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:34 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5b2f97f3, org.springframework.security.web.context.SecurityContextPersistenceFilter@25466c50, org.springframework.security.web.header.HeaderWriterFilter@4750f89, org.springframework.security.web.authentication.logout.LogoutFilter@55567bd6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6c5da3bc, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6f41f820, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@57d23587, org.springframework.security.web.access.ExceptionTranslationFilter@2a55294e, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3443f882] -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.344 seconds (JVM running for 11565.928) -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:34 CST 2025] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 235 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=235 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 235 -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [235] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [235] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [235] -2025-10-22 14:10:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [235] -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 235 -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID235: 成功=true -2025-10-22 14:10:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:34 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:10:36 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:36 [Thread-117] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:36 [Thread-117] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:36 [Thread-117] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:36 [Thread-117] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:36 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:36 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:36 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:36 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:36 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:36 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:36 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:36 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:36 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 158 ms -2025-10-22 14:10:36 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:36 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:36 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:36 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:37 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: c66fef79-4cf5-400c-ac0b-bea27f581bee - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:37 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6c303b1e, org.springframework.security.web.context.SecurityContextPersistenceFilter@25fa5b2a, org.springframework.security.web.header.HeaderWriterFilter@7803205f, org.springframework.security.web.authentication.logout.LogoutFilter@399cee3b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@10f30fbb, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2f2803a1, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@366d4195, org.springframework.security.web.access.ExceptionTranslationFilter@27b30afe, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@84d33e3] -2025-10-22 14:10:37 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:37 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:37 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.401 seconds (JVM running for 11568.812) -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:37 CST 2025] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 236 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=236 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 236 -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [236] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [236] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [236] -2025-10-22 14:10:37 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [236] -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 236 -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID236: 成功=true -2025-10-22 14:10:37 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:37 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:10:52 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:52 [Thread-121] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:52 [Thread-121] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:52 [Thread-121] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:52 [Thread-121] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:52 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:52 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:52 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:52 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:52 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:52 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:52 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:52 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:52 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:52 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 142 ms -2025-10-22 14:10:52 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:52 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:52 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:52 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:52 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:52 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:53 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 87072427-9af7-4076-8627-af41e10ce8fc - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:53 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4d41524c, org.springframework.security.web.context.SecurityContextPersistenceFilter@849dbd6, org.springframework.security.web.header.HeaderWriterFilter@1486bb8d, org.springframework.security.web.authentication.logout.LogoutFilter@3717db88, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@369bca7e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@50bdaa44, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5e4c703, org.springframework.security.web.access.ExceptionTranslationFilter@5036cedf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2b695640] -2025-10-22 14:10:53 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:53 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:53 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.347 seconds (JVM running for 11584.747) -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:53 CST 2025] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 237 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=237 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 237 -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [237] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [237] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [237] -2025-10-22 14:10:53 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [237] -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 237 -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID237: 成功=true -2025-10-22 14:10:53 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:53 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:10:56 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:56 [Thread-125] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:56 [Thread-125] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:56 [Thread-125] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:56 [Thread-125] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:56 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:56 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:56 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:56 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:56 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:56 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:56 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:56 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:56 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 177 ms -2025-10-22 14:10:56 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:56 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:56 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:56 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:56 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 6225f519-cc4d-4bb2-91fb-2a1187de3b5e - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:56 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2dda85d9, org.springframework.security.web.context.SecurityContextPersistenceFilter@669cf965, org.springframework.security.web.header.HeaderWriterFilter@78fbf6a9, org.springframework.security.web.authentication.logout.LogoutFilter@54e41981, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@30d990fc, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@725b6bcf, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7d129eb1, org.springframework.security.web.access.ExceptionTranslationFilter@2e80505, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@34e91c60] -2025-10-22 14:10:56 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:56 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:56 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.402 seconds (JVM running for 11588.641) -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:56 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:56 CST 2025] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:56 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 238 -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=238 -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 238 -2025-10-22 14:10:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [238] -2025-10-22 14:10:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [238] -2025-10-22 14:10:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [238] -2025-10-22 14:10:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [238] -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 238 -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID238: 成功=true -2025-10-22 14:10:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:57 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:10:58 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:10:58 [Thread-129] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:10:58 [Thread-129] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:58 [Thread-129] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:10:58 [Thread-129] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:10:58 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:10:58 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:10:58 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 14:10:58 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:10:58 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:10:58 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:10:58 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 162 ms -2025-10-22 14:10:58 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:10:58 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:10:58 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:10:58 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:10:58 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:10:58 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:10:58 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 0b17f159-2978-49e7-a4cc-140814c0ebf1 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:10:58 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@9de18b9, org.springframework.security.web.context.SecurityContextPersistenceFilter@3ba5547f, org.springframework.security.web.header.HeaderWriterFilter@1c12299f, org.springframework.security.web.authentication.logout.LogoutFilter@4fd2e84a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@41e768e7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5316dc6d, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1be71c53, org.springframework.security.web.access.ExceptionTranslationFilter@725c17e9, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7c2b3e02] -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.385 seconds (JVM running for 11590.497) -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:10:58 CST 2025] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 239 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=239 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 239 -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [239] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [239] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [239] -2025-10-22 14:10:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [239] -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 239 -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID239: 成功=true -2025-10-22 14:10:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:10:58 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:11:09 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 3 class path changes (0 additions, 0 deletions, 3 modifications) -2025-10-22 14:11:09 [Thread-133] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:11:09 [Thread-133] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:09 [Thread-133] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:11:09 [Thread-133] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:11:09 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:11:09 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:11:09 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:11:09 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:11:09 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:11:09 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:11:09 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 160 ms -2025-10-22 14:11:09 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:11:09 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:11:09 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:11:09 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:11:09 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:11:09 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:09 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 29672d57-8970-46a7-b44c-fba418dec4fe - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:11:09 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@64b45e8c, org.springframework.security.web.context.SecurityContextPersistenceFilter@3398c855, org.springframework.security.web.header.HeaderWriterFilter@3cc5e14, org.springframework.security.web.authentication.logout.LogoutFilter@43af5c0b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2b951a6a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@575d38ef, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6e27b19c, org.springframework.security.web.access.ExceptionTranslationFilter@12fb364, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@768e40ab] -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.365 seconds (JVM running for 11601.411) -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:11:09 CST 2025] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 240 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=240 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 240 -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [240] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [240] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [240] -2025-10-22 14:11:09 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [240] -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 240 -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID240: 成功=true -2025-10-22 14:11:09 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:11:09 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:11:19 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:11:19 [Thread-137] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:11:19 [Thread-137] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:19 [Thread-137] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:11:19 [Thread-137] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:11:19 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:11:19 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:11:19 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 14 ms. Found 4 JPA repository interfaces. -2025-10-22 14:11:19 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:11:19 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:11:19 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:11:19 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 198 ms -2025-10-22 14:11:19 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:11:19 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:11:19 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:11:19 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:11:19 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:11:19 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:19 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 8a476e40-6a5d-4c54-b11e-f5cbe9663125 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:11:19 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5d52cb38, org.springframework.security.web.context.SecurityContextPersistenceFilter@17d7a806, org.springframework.security.web.header.HeaderWriterFilter@7f68e2bb, org.springframework.security.web.authentication.logout.LogoutFilter@7f575270, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5728edd6, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6d2f1d67, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@22a87793, org.springframework.security.web.access.ExceptionTranslationFilter@3441cf83, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3806b3e7] -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.444 seconds (JVM running for 11611.412) -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:11:19 CST 2025] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 241 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=241 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 241 -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [241] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [241] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [241] -2025-10-22 14:11:19 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [241] -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 241 -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID241: 成功=true -2025-10-22 14:11:19 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:11:19 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:11:21 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:11:21 [Thread-141] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:11:21 [Thread-141] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:21 [Thread-141] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:11:21 [Thread-141] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:11:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:11:21 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:11:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:11:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:11:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:11:21 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:11:21 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:11:21 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:11:21 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:11:21 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:11:21 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 159 ms -2025-10-22 14:11:21 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:11:21 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:11:21 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:11:21 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:11:21 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:11:21 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:11:21 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 5c4a6f4f-a77e-402a-9411-b694f6402e80 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:11:21 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@79ed0597, org.springframework.security.web.context.SecurityContextPersistenceFilter@59302c5b, org.springframework.security.web.header.HeaderWriterFilter@1e77bb97, org.springframework.security.web.authentication.logout.LogoutFilter@6f16b244, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2f2b98ce, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1494a81e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3dee50f0, org.springframework.security.web.access.ExceptionTranslationFilter@5f0c8114, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@20e877b0] -2025-10-22 14:11:21 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:11:22 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:11:22 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.392 seconds (JVM running for 11613.704) -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:11:22 CST 2025] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 242 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=242 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 242 -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [242] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [242] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [242] -2025-10-22 14:11:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [242] -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 242 -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID242: 成功=true -2025-10-22 14:11:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:11:22 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:13:06 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 14:13:06 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 14:13:06 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 14:13:06 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:13:06 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:13:06 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:13:06 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:14:11 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:14:11 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:15:49 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:15:49 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:16:36 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:16:36 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:19:34 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:19:34 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:19:34 [http-nio-8080-exec-9] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy484.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy486.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 14:19:37 [http-nio-8080-exec-10] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:19:37 [http-nio-8080-exec-10] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:19:40 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:19:40 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:19:40 [http-nio-8080-exec-1] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy484.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy486.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 14:21:29 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:21:29 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:21:29 [http-nio-8080-exec-3] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy484.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy486.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 14:21:39 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:21:39 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:21:45 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:21:45 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:21:45 [http-nio-8080-exec-2] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy484.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy486.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 14:22:22 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:22:22 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:22:28 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:22:28 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:22:28 [http-nio-8080-exec-8] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy484.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy40/jdk.proxy40.$Proxy486.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.id = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 14:24:21 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:24:21 [Thread-145] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:24:21 [Thread-145] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 14:24:21 [Thread-145] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:21 [Thread-145] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:24:21 [Thread-145] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:24:21 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:24:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:24:21 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 4 JPA repository interfaces. -2025-10-22 14:24:21 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:24:21 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:24:21 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:24:21 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 258 ms -2025-10-22 14:24:21 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:24:21 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:24:21 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:24:21 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:24:21 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:24:21 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:21 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 9cd41d16-3e8d-4b13-aecb-89ce2ef43ca2 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:24:21 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1f85450b, org.springframework.security.web.context.SecurityContextPersistenceFilter@26388f39, org.springframework.security.web.header.HeaderWriterFilter@19333496, org.springframework.security.web.authentication.logout.LogoutFilter@e0526ed, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@56abfaf5, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6cb12383, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3965efd8, org.springframework.security.web.access.ExceptionTranslationFilter@6d3ae340, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@183e23cf] -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.493 seconds (JVM running for 12393.353) -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:24:21 CST 2025] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 243 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=243 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 243 -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [243] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [243] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [243] -2025-10-22 14:24:21 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [243] -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 243 -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID243: 成功=true -2025-10-22 14:24:21 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:24:21 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:24:23 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:24:23 [Thread-149] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:24:23 [Thread-149] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:23 [Thread-149] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:24:23 [Thread-149] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:24:23 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:24:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:24:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 4 JPA repository interfaces. -2025-10-22 14:24:23 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:24:23 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:24:23 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:24:23 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 188 ms -2025-10-22 14:24:23 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:24:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:24:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:24:23 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:24:23 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:24:23 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:23 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 4f078add-dedd-45f5-9e6c-76c0be2ca60f - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:24:23 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7556fb49, org.springframework.security.web.context.SecurityContextPersistenceFilter@bb2892d, org.springframework.security.web.header.HeaderWriterFilter@68ec5c68, org.springframework.security.web.authentication.logout.LogoutFilter@3c77d3c5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@79172940, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2996cb2d, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@40c08d89, org.springframework.security.web.access.ExceptionTranslationFilter@45f2a473, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5c14bb59] -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.395 seconds (JVM running for 12395.221) -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:24:23 CST 2025] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 244 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=244 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 244 -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [244] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [244] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [244] -2025-10-22 14:24:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [244] -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 244 -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID244: 成功=true -2025-10-22 14:24:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:24:23 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:24:24 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:24:24 [Thread-153] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:24:24 [Thread-153] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:24 [Thread-153] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:24:24 [Thread-153] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:24:25 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:24:25 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:24:25 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:24:25 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:24:25 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:24:25 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:24:25 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 168 ms -2025-10-22 14:24:25 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:24:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:24:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:24:25 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:24:25 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:24:25 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:25 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: f7197f6e-49c3-4fc5-8464-dd4a7a31af04 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:24:25 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7a6c69b3, org.springframework.security.web.context.SecurityContextPersistenceFilter@70d4fda2, org.springframework.security.web.header.HeaderWriterFilter@6570760, org.springframework.security.web.authentication.logout.LogoutFilter@1a8a23b6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@48c9343e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@73369b54, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@647a4658, org.springframework.security.web.access.ExceptionTranslationFilter@18147a01, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7de80177] -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.378 seconds (JVM running for 12397.073) -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:24:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:24:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:24:25 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:24:25 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:24:25 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 14:24:25 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -java.lang.IllegalStateException: Failed to execute CommandLineRunner - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:785) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy43/jdk.proxy43.$Proxy514.countByArticleId(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.testQueryMethods(MessageDataChecker.java:105) ~[classes/:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.run(MessageDataChecker.java:47) ~[classes/:na] - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782) ~[spring-boot-2.6.13.jar:2.6.13] - ... 8 common frames omitted -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 18 common frames omitted -2025-10-22 14:24:25 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:24:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:24:25 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:32:11 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:32:11 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:32:11 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 10 ms. Found 4 JPA repository interfaces. -2025-10-22 14:32:11 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:32:11 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:32:11 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:32:11 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 148 ms -2025-10-22 14:32:11 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:32:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:32:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:32:11 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:32:11 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:32:11 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:11 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 344cd4e6-13c9-41eb-b5fa-35d6ae2c07a0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:32:11 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@8a42337, org.springframework.security.web.context.SecurityContextPersistenceFilter@1b331b6b, org.springframework.security.web.header.HeaderWriterFilter@6bdc1289, org.springframework.security.web.authentication.logout.LogoutFilter@49294e83, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4cb78c32, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2cdf2c76, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@51493442, org.springframework.security.web.access.ExceptionTranslationFilter@6c28327a, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@4d0294c2] -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.373 seconds (JVM running for 12863.45) -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:32:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:32:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:32:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:32:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:32:11 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 14:32:11 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -java.lang.IllegalStateException: Failed to execute CommandLineRunner - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:785) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy44/jdk.proxy44.$Proxy524.countByArticleId(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.testQueryMethods(MessageDataChecker.java:105) ~[classes/:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.run(MessageDataChecker.java:47) ~[classes/:na] - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782) ~[spring-boot-2.6.13.jar:2.6.13] - ... 8 common frames omitted -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 18 common frames omitted -2025-10-22 14:32:11 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:32:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 13744 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:32:13 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:32:13 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:32:13 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:32:13 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:32:13 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:32:13 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:32:13 [restartedMain] INFO o.a.c.c.C.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 158 ms -2025-10-22 14:32:13 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:32:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:32:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:32:13 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:32:13 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:32:13 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:13 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 20273f5d-da2c-44b9-b48a-a9d0608987ed - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:32:13 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@16bc7ec1, org.springframework.security.web.context.SecurityContextPersistenceFilter@531448d7, org.springframework.security.web.header.HeaderWriterFilter@305c5b38, org.springframework.security.web.authentication.logout.LogoutFilter@98e7be0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@49eb8c16, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2a7acd3e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@95fb0dc, org.springframework.security.web.access.ExceptionTranslationFilter@596752bf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@c5905b4] -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.37 seconds (JVM running for 12865.296) -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:32:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:32:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:32:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:32:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:32:13 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 14:32:13 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -java.lang.IllegalStateException: Failed to execute CommandLineRunner - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:785) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy45/jdk.proxy45.$Proxy534.countByArticleId(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.testQueryMethods(MessageDataChecker.java:105) ~[classes/:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.run(MessageDataChecker.java:47) ~[classes/:na] - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782) ~[spring-boot-2.6.13.jar:2.6.13] - ... 8 common frames omitted -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 18 common frames omitted -2025-10-22 14:32:13 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:32:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:32:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 2656 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:32:26 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:32:26 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:32:26 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable -2025-10-22 14:32:26 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2025-10-22 14:32:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:32:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 42 ms. Found 4 JPA repository interfaces. -2025-10-22 14:32:26 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:32:27 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:32:27 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:32:27 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:32:27 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:32:27 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 880 ms -2025-10-22 14:32:27 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:32:27 [restartedMain] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.12.Final -2025-10-22 14:32:27 [restartedMain] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} -2025-10-22 14:32:27 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:32:27 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:32:27 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:32:28 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:32:28 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:28 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: d9001562-6e8e-4014-b404-83406c128ea6 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:32:28 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@74b78fb8, org.springframework.security.web.context.SecurityContextPersistenceFilter@5a0723a, org.springframework.security.web.header.HeaderWriterFilter@76029b52, org.springframework.security.web.authentication.logout.LogoutFilter@70131a4f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@568a542e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3ac9c280, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7a56b4b1, org.springframework.security.web.access.ExceptionTranslationFilter@3b0113dd, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1a22f2f5] -2025-10-22 14:32:28 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:32:28 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:32:28 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 2.598 seconds (JVM running for 2.912) -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:32:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:32:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:32:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:32:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:32:28 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 14:32:28 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -java.lang.IllegalStateException: Failed to execute CommandLineRunner - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:785) - at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) -Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) - at jdk.proxy3/jdk.proxy3.$Proxy125.countByArticleId(Unknown Source) - at com.qf.myafterprojecy.runner.MessageDataChecker.testQueryMethods(MessageDataChecker.java:105) - at com.qf.myafterprojecy.runner.MessageDataChecker.run(MessageDataChecker.java:47) - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782) - ... 8 common frames omitted -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) - at java.base/java.util.Optional.orElseThrow(Optional.java:403) - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) - at org.springframework.data.util.Lazy.get(Lazy.java:115) - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) - ... 18 common frames omitted -2025-10-22 14:32:28 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:32:28 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:32:28 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:33:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:33:25 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:33:25 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:33:25 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable -2025-10-22 14:33:25 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2025-10-22 14:33:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:33:26 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 39 ms. Found 4 JPA repository interfaces. -2025-10-22 14:33:26 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:33:26 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:33:26 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:33:26 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:33:26 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:33:26 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 826 ms -2025-10-22 14:33:26 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:33:26 [restartedMain] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.12.Final -2025-10-22 14:33:26 [restartedMain] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} -2025-10-22 14:33:26 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:33:27 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:33:27 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:33:27 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:33:27 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:33:27 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 65c0c078-a8e0-4079-884e-7eb2f752bd01 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:33:27 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@174fed7b, org.springframework.security.web.context.SecurityContextPersistenceFilter@478443d3, org.springframework.security.web.header.HeaderWriterFilter@34acebf8, org.springframework.security.web.authentication.logout.LogoutFilter@7083bb56, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@24a17b88, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3bc0884a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@72456670, org.springframework.security.web.access.ExceptionTranslationFilter@1beac428, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6a6fd683] -2025-10-22 14:33:27 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:33:28 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:33:28 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 2.538 seconds (JVM running for 2.817) -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:33:28 CST 2025] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 245 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=245 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 245 -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [245] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [245] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [245] -2025-10-22 14:33:28 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [245] -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 245 -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID245: 成功=true -2025-10-22 14:33:28 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:37:11 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 14:37:11 [Thread-5] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 14:37:11 [Thread-5] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:37:11 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 14:37:11 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 14:37:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 14:37:11 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 14:37:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 14:37:11 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 14:37:11 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 14:37:11 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 14:37:12 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 14:37:12 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 14:37:12 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 173 ms -2025-10-22 14:37:12 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 14:37:12 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 14:37:12 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 14:37:12 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 14:37:12 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 14:37:12 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 14:37:12 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 1fd27520-4bf1-4f75-af91-d0e98dab31fe - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 14:37:12 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3cab0485, org.springframework.security.web.context.SecurityContextPersistenceFilter@47d0277c, org.springframework.security.web.header.HeaderWriterFilter@418feae8, org.springframework.security.web.authentication.logout.LogoutFilter@5e90f363, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@20e82285, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@265baa46, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@43cae11, org.springframework.security.web.access.ExceptionTranslationFilter@523a91f7, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6b800b35] -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.497 seconds (JVM running for 227.094) -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 14:37:12 CST 2025] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 246 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=246 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 246 -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [246] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [246] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [246] -2025-10-22 14:37:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [246] -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 246 -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID246: 成功=true -2025-10-22 14:37:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 14:37:12 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 14:52:29 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 14:52:29 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 14:52:29 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 14:52:29 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 1 -2025-10-22 14:52:29 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 1 -2025-10-22 14:52:29 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 14:52:29 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 2 -2025-10-22 14:52:29 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 2 -2025-10-22 14:52:29 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [2] -2025-10-22 14:52:29 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 3 -2025-10-22 14:52:29 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 3 -2025-10-22 14:52:29 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] -2025-10-22 14:52:29 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 4 -2025-10-22 14:52:29 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 4 -2025-10-22 14:52:29 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] -2025-10-22 14:52:29 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收根据文章ID获取消息的请求: 5 -2025-10-22 14:52:29 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 根据文章ID查询消息: 5 -2025-10-22 14:52:29 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] -2025-10-22 14:52:32 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 14:52:32 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 14:52:33 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:52:33 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:52:33 [http-nio-8080-exec-8] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy5/jdk.proxy5.$Proxy140.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -2025-10-22 14:52:48 [http-nio-8080-exec-9] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 14:52:48 [http-nio-8080-exec-9] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 14:52:48 [http-nio-8080-exec-9] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy5/jdk.proxy5.$Proxy140.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -2025-10-22 15:00:03 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 15:00:03 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 15:00:03 [http-nio-8080-exec-1] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy5/jdk.proxy5.$Proxy140.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -2025-10-22 15:01:40 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 3 class path changes (0 additions, 0 deletions, 3 modifications) -2025-10-22 15:01:40 [Thread-7] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 15:01:40 [Thread-7] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 15:01:40 [Thread-7] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 15:01:40 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 15:01:40 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 15:01:40 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 15:01:40 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 15:01:40 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 15:01:40 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 15:01:40 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 15:01:40 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 15:01:40 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 206 ms -2025-10-22 15:01:40 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 15:01:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 15:01:40 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 15:01:40 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 15:01:40 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 15:01:40 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 15:01:40 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: ebdf8946-e662-4d02-8a00-1dec33780749 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 15:01:40 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4fae227, org.springframework.security.web.context.SecurityContextPersistenceFilter@6cd821eb, org.springframework.security.web.header.HeaderWriterFilter@760586e4, org.springframework.security.web.authentication.logout.LogoutFilter@2d43812e, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@69895ea1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@798e9b87, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2ddd6df6, org.springframework.security.web.access.ExceptionTranslationFilter@5ce99fc8, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@78b59e5f] -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.483 seconds (JVM running for 1695.6) -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 15:01:40 CST 2025] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 247 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=247 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 247 -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [247] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [247] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [247] -2025-10-22 15:01:40 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [247] -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 247 -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID247: 成功=true -2025-10-22 15:01:40 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 15:01:40 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 15:53:47 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 15:53:47 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 15:53:47 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 15:53:47 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 15:53:47 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 15:53:47 [http-nio-8080-exec-1] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy6/jdk.proxy6.$Proxy154.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy6/jdk.proxy6.$Proxy156.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 15:53:49 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 15:53:49 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 15:53:52 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 15:53:52 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 15:53:52 [http-nio-8080-exec-3] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy6/jdk.proxy6.$Proxy154.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:186) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy6/jdk.proxy6.$Proxy156.getSingleResult(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = ?1] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - ... 114 common frames omitted -2025-10-22 16:33:56 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 16:33:56 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:34:01 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 16:34:01 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:34:11 [http-nio-8080-exec-8] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 16:34:11 [http-nio-8080-exec-8] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:35:05 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 16:35:05 [Thread-11] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 16:35:05 [Thread-11] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 16:35:05 [Thread-11] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:05 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 16:35:05 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 16:35:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 16:35:05 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 16:35:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 16:35:06 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 16:35:06 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 16:35:06 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 16:35:06 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 16:35:06 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 16:35:06 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 211 ms -2025-10-22 16:35:06 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 16:35:06 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 16:35:06 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 16:35:06 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 16:35:06 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 16:35:06 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:06 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 3c70549c-7110-4608-9cd6-1ad971cefc5e - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 16:35:06 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2c95c5a8, org.springframework.security.web.context.SecurityContextPersistenceFilter@3ff8f8d5, org.springframework.security.web.header.HeaderWriterFilter@393b010a, org.springframework.security.web.authentication.logout.LogoutFilter@7e8d9135, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7e2e8d18, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6d55841c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5e239131, org.springframework.security.web.access.ExceptionTranslationFilter@7f5d86bf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1862e6f1] -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.496 seconds (JVM running for 7301.182) -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 16:35:06 CST 2025] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 248 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=248 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 248 -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [248] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [248] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [248] -2025-10-22 16:35:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [248] -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 248 -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID248: 成功=true -2025-10-22 16:35:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 16:35:06 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 16:35:07 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 16:35:07 [Thread-15] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 16:35:07 [Thread-15] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:07 [Thread-15] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 16:35:07 [Thread-15] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 16:35:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 16:35:07 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 16:35:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 16:35:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 16:35:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 16:35:08 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 16:35:08 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 16:35:08 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 16:35:08 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 158 ms -2025-10-22 16:35:08 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 16:35:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 16:35:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 16:35:08 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 16:35:08 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 16:35:08 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:08 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 294d3439-cf39-40aa-8aa4-43cfd5fdb8cc - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 16:35:08 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6396ae9b, org.springframework.security.web.context.SecurityContextPersistenceFilter@43740c2a, org.springframework.security.web.header.HeaderWriterFilter@7239471d, org.springframework.security.web.authentication.logout.LogoutFilter@7fe8af8c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@68c214e8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@24a75f5f, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@49d46991, org.springframework.security.web.access.ExceptionTranslationFilter@73d7ffd0, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@484625b7] -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.442 seconds (JVM running for 7303.089) -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 16:35:08 CST 2025] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 249 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=249 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 249 -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [249] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [249] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [249] -2025-10-22 16:35:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [249] -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 249 -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID249: 成功=true -2025-10-22 16:35:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 16:35:08 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 16:35:10 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 16:35:10 [Thread-19] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 16:35:10 [Thread-19] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:10 [Thread-19] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 16:35:10 [Thread-19] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 16:35:10 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 20668 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 16:35:10 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 16:35:10 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 16:35:10 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 16:35:10 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 4 JPA repository interfaces. -2025-10-22 16:35:11 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 16:35:11 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 16:35:11 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 16:35:11 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 214 ms -2025-10-22 16:35:11 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 16:35:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 16:35:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 16:35:11 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 16:35:11 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 16:35:11 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:11 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 1fd54f39-a6e7-4ccd-9107-eac895802b4b - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 16:35:11 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4d5963b0, org.springframework.security.web.context.SecurityContextPersistenceFilter@45e23030, org.springframework.security.web.header.HeaderWriterFilter@50ffa079, org.springframework.security.web.authentication.logout.LogoutFilter@39747bbb, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@469e1054, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@40923990, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1aea2086, org.springframework.security.web.access.ExceptionTranslationFilter@1853cb3c, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@347d7016] -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.453 seconds (JVM running for 7306.035) -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 16:35:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 16:35:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 16:35:11 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 16:35:11 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 16:35:11 [restartedMain] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener - - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2025-10-22 16:35:11 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed -java.lang.IllegalStateException: Failed to execute CommandLineRunner - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:785) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13] - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13] - at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.13.jar:2.6.13] -Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy9/jdk.proxy9.$Proxy184.countByArticleId(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.testQueryMethods(MessageDataChecker.java:105) ~[classes/:na] - at com.qf.myafterprojecy.runner.MessageDataChecker.run(MessageDataChecker.java:47) ~[classes/:na] - at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782) ~[spring-boot-2.6.13.jar:2.6.13] - ... 8 common frames omitted -Caused by: java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.getName(QueryParameterSetterFactory.java:259) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.findParameterForBinding(QueryParameterSetterFactory.java:245) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.create(QueryParameterSetterFactory.java:216) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryParameterSetter(ParameterBinderFactory.java:140) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createSetters(ParameterBinderFactory.java:129) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.ParameterBinderFactory.createQueryAwareBinder(ParameterBinderFactory.java:100) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createBinder(AbstractStringBasedJpaQuery.java:105) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:95) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:227) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 18 common frames omitted -2025-10-22 16:35:11 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:35:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 16:35:11 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 16:48:55 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 16:48:55 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 16:48:55 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 16:48:55 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable -2025-10-22 16:48:55 [restartedMain] INFO o.s.b.d.e.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2025-10-22 16:48:55 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 16:48:55 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 47 ms. Found 4 JPA repository interfaces. -2025-10-22 16:48:55 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 16:48:55 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 16:48:56 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 16:48:56 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 16:48:56 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 16:48:56 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 855 ms -2025-10-22 16:48:56 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 16:48:56 [restartedMain] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.6.12.Final -2025-10-22 16:48:56 [restartedMain] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} -2025-10-22 16:48:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 16:48:56 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 16:48:56 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 16:48:56 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 16:48:56 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 16:48:57 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: ded3a573-b5ad-4805-8632-b18c6f2c93ed - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 16:48:57 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@27942dd0, org.springframework.security.web.context.SecurityContextPersistenceFilter@4635534c, org.springframework.security.web.header.HeaderWriterFilter@36c02de, org.springframework.security.web.authentication.logout.LogoutFilter@1904be60, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@17f20930, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@568a542e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@74b78fb8, org.springframework.security.web.access.ExceptionTranslationFilter@2ac90397, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6ddddca5] -2025-10-22 16:48:57 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 16:48:57 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 16:48:57 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 2.442 seconds (JVM running for 2.707) -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 16:48:57 CST 2025] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 250 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=250 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 250 -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [250] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [250] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [250] -2025-10-22 16:48:57 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [250] -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 250 -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID250: 成功=true -2025-10-22 16:48:57 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 16:49:05 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 16:49:05 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 16:49:05 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 0 ms -2025-10-22 16:49:05 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收获取文章评论数量的请求: 1 -2025-10-22 16:49:05 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 16:49:05 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:08:51 [http-nio-8080-exec-4] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 17:08:51 [http-nio-8080-exec-4] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:08:53 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 17:08:53 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 17:08:53 [http-nio-8080-exec-5] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = :messageId]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = :messageId] - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) - at jdk.proxy3/jdk.proxy3.$Proxy125.incrementLikes(Unknown Source) - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:187) - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.base/java.lang.Thread.run(Thread.java:1447) -Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = :messageId] - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1620) - at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) - at jdk.proxy3/jdk.proxy3.$Proxy132.getSingleResult(Unknown Source) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:198) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) - ... 93 common frames omitted -Caused by: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.qf.myafterprojecy.pojo.Message m SET m.likes = m.likes + 1 WHERE m.messageid = :messageId] - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:319) - at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) - at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) - at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459) - at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649) - at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617) - ... 114 common frames omitted -2025-10-22 17:11:33 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:11:33 [Thread-5] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:11:33 [Thread-5] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 17:11:33 [Thread-5] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:11:33 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:11:33 [Thread-5] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:11:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:11:33 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:11:33 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:11:33 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:11:33 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 17:11:33 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:11:33 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:11:33 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:11:33 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:11:33 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:11:33 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 212 ms -2025-10-22 17:11:33 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:11:33 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:11:33 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:11:33 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:11:33 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:11:33 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:11:33 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 2032482b-0374-494b-bcce-7253baed8e76 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:11:33 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@51cec1ab, org.springframework.security.web.context.SecurityContextPersistenceFilter@1583da98, org.springframework.security.web.header.HeaderWriterFilter@684fab27, org.springframework.security.web.authentication.logout.LogoutFilter@267fa4d8, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5546b0e6, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@580137e3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@14f36909, org.springframework.security.web.access.ExceptionTranslationFilter@257517ea, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@21521c77] -2025-10-22 17:11:34 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:11:34 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:11:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.511 seconds (JVM running for 1359.381) -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:11:34 CST 2025] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 251 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=251 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 251 -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [251] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [251] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [251] -2025-10-22 17:11:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [251] -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 251 -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID251: 成功=true -2025-10-22 17:11:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:11:34 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:11:35 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 3 class path changes (0 additions, 0 deletions, 3 modifications) -2025-10-22 17:11:35 [Thread-7] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:11:35 [Thread-7] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:11:35 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:11:35 [Thread-7] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:11:35 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:11:35 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:11:35 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:11:35 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:11:35 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:11:35 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:11:35 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:11:35 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:11:35 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 162 ms -2025-10-22 17:11:35 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:11:35 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:11:35 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:11:35 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:11:35 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:11:35 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:11:35 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 8b61f56d-25ba-47f2-a0c8-2c9720eee1e9 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:11:35 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4b662026, org.springframework.security.web.context.SecurityContextPersistenceFilter@51467feb, org.springframework.security.web.header.HeaderWriterFilter@1823eca2, org.springframework.security.web.authentication.logout.LogoutFilter@11d47513, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@445e222d, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@74ce5169, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@957393, org.springframework.security.web.access.ExceptionTranslationFilter@77f8eb04, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1c0d0deb] -2025-10-22 17:11:35 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:11:35 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:11:35 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.41 seconds (JVM running for 1361.252) -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:11:35 CST 2025] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 252 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=252 -2025-10-22 17:11:35 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 252 -2025-10-22 17:11:35 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [252] -2025-10-22 17:11:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [252] -2025-10-22 17:11:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [252] -2025-10-22 17:11:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [252] -2025-10-22 17:11:36 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 252 -2025-10-22 17:11:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID252: 成功=true -2025-10-22 17:11:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:11:36 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:05 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:05 [Thread-11] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:05 [Thread-11] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:05 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:05 [Thread-11] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:05 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:05 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:05 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:05 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:05 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:05 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:05 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 170 ms -2025-10-22 17:12:05 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:05 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:05 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:05 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:05 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:06 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 9a36b164-ab95-48e1-868e-6c2ab77f7f02 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:06 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@8337005, org.springframework.security.web.context.SecurityContextPersistenceFilter@5f4835b9, org.springframework.security.web.header.HeaderWriterFilter@2d4fe99c, org.springframework.security.web.authentication.logout.LogoutFilter@533d363b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@f46c5f3, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1f173eb0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e51d463, org.springframework.security.web.access.ExceptionTranslationFilter@7d1dbb90, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@a1bd32c] -2025-10-22 17:12:06 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:06 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:06 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.407 seconds (JVM running for 1391.406) -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:06 CST 2025] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 253 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=253 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 253 -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [253] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [253] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [253] -2025-10-22 17:12:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [253] -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 253 -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID253: 成功=true -2025-10-22 17:12:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:06 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:12 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:12 [Thread-15] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:12 [Thread-15] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:12 [Thread-15] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:12 [Thread-15] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:13 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:13 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:13 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:13 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:13 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:13 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:13 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 157 ms -2025-10-22 17:12:13 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:13 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:13 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:13 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:13 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:13 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 3ca3376f-bcd7-4287-b0bf-e3df2096f0d6 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:13 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@300fda06, org.springframework.security.web.context.SecurityContextPersistenceFilter@75d95665, org.springframework.security.web.header.HeaderWriterFilter@77e591d0, org.springframework.security.web.authentication.logout.LogoutFilter@1affd09a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@434334f0, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7e9ab526, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@129d11c0, org.springframework.security.web.access.ExceptionTranslationFilter@4a4ee543, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7c1e938f] -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.374 seconds (JVM running for 1398.709) -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:13 CST 2025] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 254 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=254 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 254 -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [254] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [254] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [254] -2025-10-22 17:12:13 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [254] -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 254 -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID254: 成功=true -2025-10-22 17:12:13 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:13 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:17 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:17 [Thread-19] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:17 [Thread-19] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:17 [Thread-19] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:17 [Thread-19] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:17 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:17 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:17 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:17 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:18 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:18 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:18 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:18 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:18 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 160 ms -2025-10-22 17:12:18 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:18 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:18 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:18 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:18 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:18 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:18 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 92c61082-d340-46f1-b40a-34c9cf602edf - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:18 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1fbbdc50, org.springframework.security.web.context.SecurityContextPersistenceFilter@68f0158b, org.springframework.security.web.header.HeaderWriterFilter@36d947c0, org.springframework.security.web.authentication.logout.LogoutFilter@7c1a7992, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7f1908c3, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6835d750, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4d1701bc, org.springframework.security.web.access.ExceptionTranslationFilter@ea3230b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@45ddc110] -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.383 seconds (JVM running for 1403.582) -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:18 CST 2025] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 255 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=255 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 255 -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [255] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [255] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [255] -2025-10-22 17:12:18 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [255] -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 255 -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID255: 成功=true -2025-10-22 17:12:18 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:18 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:19 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:19 [Thread-23] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:19 [Thread-23] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:19 [Thread-23] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:19 [Thread-23] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:19 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:19 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:19 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:19 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:19 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:19 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:19 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:19 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:19 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:19 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:19 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 155 ms -2025-10-22 17:12:19 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:19 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:19 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:19 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:19 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:19 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:20 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: feb85d4e-521d-4625-b1a5-f0b537a3de42 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:20 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@65fe1748, org.springframework.security.web.context.SecurityContextPersistenceFilter@1db3a43, org.springframework.security.web.header.HeaderWriterFilter@7c6dbad9, org.springframework.security.web.authentication.logout.LogoutFilter@78b7b82c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5ce72d3e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@314c58d3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6f3c033, org.springframework.security.web.access.ExceptionTranslationFilter@4ec47049, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1f7ec242] -2025-10-22 17:12:20 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:20 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:20 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.392 seconds (JVM running for 1405.429) -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:20 CST 2025] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 256 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=256 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 256 -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [256] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [256] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [256] -2025-10-22 17:12:20 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [256] -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 256 -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID256: 成功=true -2025-10-22 17:12:20 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:20 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:22 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:22 [Thread-27] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:22 [Thread-27] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:22 [Thread-27] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:22 [Thread-27] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:22 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:22 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:22 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:22 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:22 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:22 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:22 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:22 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:22 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 160 ms -2025-10-22 17:12:22 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:22 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:22 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:22 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:22 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:22 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:22 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: bcd1e493-16db-43d8-9b37-aece043104ac - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:22 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5e895ab2, org.springframework.security.web.context.SecurityContextPersistenceFilter@2d08e121, org.springframework.security.web.header.HeaderWriterFilter@42faed46, org.springframework.security.web.authentication.logout.LogoutFilter@56d0d0c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@767f378c, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7a83baff, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@27162166, org.springframework.security.web.access.ExceptionTranslationFilter@7cae0bcf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@58e5f29d] -2025-10-22 17:12:22 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:22 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:22 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.379 seconds (JVM running for 1408.285) -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:22 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:22 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:23 CST 2025] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 257 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=257 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 257 -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [257] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [257] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [257] -2025-10-22 17:12:23 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [257] -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 257 -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID257: 成功=true -2025-10-22 17:12:23 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:23 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:24 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:24 [Thread-31] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:24 [Thread-31] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:24 [Thread-31] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:24 [Thread-31] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:24 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:24 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:24 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:24 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:24 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:24 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:24 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 151 ms -2025-10-22 17:12:24 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:24 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:24 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:24 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:24 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:24 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:24 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: eb9aaddb-fe7f-48c5-b587-8813119fc455 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:24 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@209075ec, org.springframework.security.web.context.SecurityContextPersistenceFilter@3058bde8, org.springframework.security.web.header.HeaderWriterFilter@4d18f23d, org.springframework.security.web.authentication.logout.LogoutFilter@beab55c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@27d24a0f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@742b6d3e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@37d44e76, org.springframework.security.web.access.ExceptionTranslationFilter@57609942, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@763be2c3] -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.379 seconds (JVM running for 1410.132) -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:24 CST 2025] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 258 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=258 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 258 -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [258] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [258] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [258] -2025-10-22 17:12:24 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [258] -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 258 -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID258: 成功=true -2025-10-22 17:12:24 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:24 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:12:50 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:12:50 [Thread-35] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:12:50 [Thread-35] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:50 [Thread-35] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:12:50 [Thread-35] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:12:50 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:12:50 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:12:50 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:12:50 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:12:50 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:12:50 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:12:50 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 154 ms -2025-10-22 17:12:50 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:12:50 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:12:50 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:12:50 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:12:50 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:12:50 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:12:50 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: eb78eff7-b4ce-49f4-a44e-d7a98197e792 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:12:50 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6d9a70b2, org.springframework.security.web.context.SecurityContextPersistenceFilter@578ba41b, org.springframework.security.web.header.HeaderWriterFilter@5a6801d5, org.springframework.security.web.authentication.logout.LogoutFilter@1a8af6ed, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@44f5a3a7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@a57fda9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f432993, org.springframework.security.web.access.ExceptionTranslationFilter@1b9faba, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@428ac1e5] -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.362 seconds (JVM running for 1436.214) -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:12:50 CST 2025] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 259 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=259 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 259 -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [259] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [259] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [259] -2025-10-22 17:12:50 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [259] -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 259 -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID259: 成功=true -2025-10-22 17:12:50 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:12:50 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:13:01 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:13:01 [Thread-39] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:13:01 [Thread-39] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:13:01 [Thread-39] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:13:01 [Thread-39] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:13:01 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:13:01 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:13:01 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:13:01 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:13:01 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:13:01 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:13:01 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 162 ms -2025-10-22 17:13:01 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:13:01 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:13:01 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:13:01 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:13:01 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:13:01 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:13:01 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 64a10477-457c-4c92-b678-3c0dcbac9ba1 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:13:01 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3c74a159, org.springframework.security.web.context.SecurityContextPersistenceFilter@4b1b90e, org.springframework.security.web.header.HeaderWriterFilter@6b58c2c1, org.springframework.security.web.authentication.logout.LogoutFilter@147a64f8, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1031adfb, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@30e94588, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7bd7c610, org.springframework.security.web.access.ExceptionTranslationFilter@79ab2a67, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7fe17dc9] -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.407 seconds (JVM running for 1447.176) -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:13:01 CST 2025] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 260 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=260 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 260 -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [260] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [260] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [260] -2025-10-22 17:13:01 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [260] -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 260 -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID260: 成功=true -2025-10-22 17:13:01 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:13:01 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:13:08 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:13:08 [Thread-43] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:13:08 [Thread-43] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:13:08 [Thread-43] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:13:08 [Thread-43] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:13:08 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:13:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:13:08 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 14 ms. Found 4 JPA repository interfaces. -2025-10-22 17:13:08 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:13:08 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:13:08 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:13:08 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 172 ms -2025-10-22 17:13:08 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:13:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:13:08 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:13:08 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:13:08 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:13:08 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:13:08 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 3fd63215-c4d8-45ea-bf5e-7dbd2f6b298b - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:13:08 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@68220527, org.springframework.security.web.context.SecurityContextPersistenceFilter@221c561e, org.springframework.security.web.header.HeaderWriterFilter@794af326, org.springframework.security.web.authentication.logout.LogoutFilter@340a056e, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@501d10da, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5a9b1aec, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5d0fcf8a, org.springframework.security.web.access.ExceptionTranslationFilter@642dc439, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2e0a1ee3] -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.399 seconds (JVM running for 1454.089) -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:13:08 CST 2025] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 261 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=261 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 261 -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [261] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [261] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [261] -2025-10-22 17:13:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [261] -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 261 -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID261: 成功=true -2025-10-22 17:13:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:13:08 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:13:12 [http-nio-8080-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 17:13:12 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 17:13:12 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-22 17:13:12 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 17:13:12 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:13:14 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 17:13:14 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 17:13:14 [http-nio-8080-exec-1] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy15/jdk.proxy15.$Proxy242.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:187) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query - at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:445) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1692) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy15/jdk.proxy15.$Proxy244.executeUpdate(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.doExecute(JpaQueryExecution.java:241) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -2025-10-22 17:14:34 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:14:34 [Thread-47] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:14:34 [Thread-47] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' -2025-10-22 17:14:34 [Thread-47] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:14:34 [Thread-47] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:14:34 [Thread-47] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:14:34 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:14:34 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:14:34 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:14:34 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:14:34 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:14:34 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:14:34 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 157 ms -2025-10-22 17:14:34 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:14:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:14:34 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:14:34 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:14:34 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:14:34 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:14:34 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 8c076cfa-e5be-4b27-827e-7ee1b9a98e10 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:14:34 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6b944bb2, org.springframework.security.web.context.SecurityContextPersistenceFilter@4bbd14d3, org.springframework.security.web.header.HeaderWriterFilter@783d90b, org.springframework.security.web.authentication.logout.LogoutFilter@27925673, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@54b3ec09, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1df8088c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5f37bbd, org.springframework.security.web.access.ExceptionTranslationFilter@4521947f, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@568a271a] -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.378 seconds (JVM running for 1539.732) -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:14:34 CST 2025] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 262 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=262 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 262 -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [262] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [262] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [262] -2025-10-22 17:14:34 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [262] -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 262 -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID262: 成功=true -2025-10-22 17:14:34 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:14:34 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:14:35 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:14:35 [Thread-51] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:14:35 [Thread-51] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:14:35 [Thread-51] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:14:35 [Thread-51] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:14:35 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:14:35 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:14:35 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:14:35 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:14:35 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:14:36 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:14:36 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:14:36 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:14:36 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 151 ms -2025-10-22 17:14:36 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:14:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:14:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:14:36 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:14:36 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:14:36 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:14:36 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: f74a0bbd-08b3-4e36-9b86-55e4bb70bf1f - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:14:36 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4d08ef1e, org.springframework.security.web.context.SecurityContextPersistenceFilter@51814b22, org.springframework.security.web.header.HeaderWriterFilter@6fa09c13, org.springframework.security.web.authentication.logout.LogoutFilter@57643b6f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@370bc0f7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@67cce174, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@45618bca, org.springframework.security.web.access.ExceptionTranslationFilter@79953042, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@79156c15] -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.358 seconds (JVM running for 1541.549) -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:14:36 CST 2025] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 263 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=263 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 263 -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [263] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [263] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [263] -2025-10-22 17:14:36 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [263] -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 263 -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID263: 成功=true -2025-10-22 17:14:36 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:14:36 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:14:59 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:14:59 [Thread-55] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:14:59 [Thread-55] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:14:59 [Thread-55] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:14:59 [Thread-55] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:14:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:14:59 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:14:59 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:00 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:00 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:00 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:00 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:00 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:00 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 176 ms -2025-10-22 17:15:00 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:00 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:00 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:00 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:00 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:00 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:00 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 21be80f2-e463-4cb6-ac3a-f205582c4ea0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:00 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@686722da, org.springframework.security.web.context.SecurityContextPersistenceFilter@54621586, org.springframework.security.web.header.HeaderWriterFilter@23ed379a, org.springframework.security.web.authentication.logout.LogoutFilter@2fd2f452, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@39b9aae8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@21c3b0df, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@a4d751, org.springframework.security.web.access.ExceptionTranslationFilter@70dd07ff, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@749eec46] -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.4 seconds (JVM running for 1565.664) -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:00 CST 2025] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 264 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=264 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 264 -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [264] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [264] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [264] -2025-10-22 17:15:00 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [264] -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 264 -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID264: 成功=true -2025-10-22 17:15:00 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:00 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:15:05 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:15:05 [Thread-59] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:15:05 [Thread-59] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:05 [Thread-59] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:15:05 [Thread-59] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:15:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:15:05 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:15:05 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:05 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:05 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:06 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:06 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:06 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 162 ms -2025-10-22 17:15:06 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:06 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:06 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:06 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:06 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:06 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:06 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: e7129e29-a62a-4730-8e50-6e2ba9f394aa - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:06 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@55321506, org.springframework.security.web.context.SecurityContextPersistenceFilter@17df398e, org.springframework.security.web.header.HeaderWriterFilter@1027478f, org.springframework.security.web.authentication.logout.LogoutFilter@1e3fe3, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@619c86ff, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@445254c2, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@14b31d23, org.springframework.security.web.access.ExceptionTranslationFilter@36027d2b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@57539e7f] -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.385 seconds (JVM running for 1571.543) -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:06 CST 2025] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 265 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=265 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 265 -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [265] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [265] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [265] -2025-10-22 17:15:06 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [265] -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 265 -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID265: 成功=true -2025-10-22 17:15:06 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:06 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:15:07 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:15:07 [Thread-63] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:15:07 [Thread-63] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:07 [Thread-63] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:15:07 [Thread-63] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:15:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:15:07 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:15:07 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:07 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:07 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:07 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:07 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:07 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:07 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:07 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:07 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 155 ms -2025-10-22 17:15:07 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:07 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:07 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:07 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:07 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:07 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:08 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: f54d2377-9934-42ed-a888-d2a583e369a0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:08 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5e407632, org.springframework.security.web.context.SecurityContextPersistenceFilter@3c13f6ee, org.springframework.security.web.header.HeaderWriterFilter@64f4d1c0, org.springframework.security.web.authentication.logout.LogoutFilter@5299939c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4c36fb7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@33a612a2, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5685b85a, org.springframework.security.web.access.ExceptionTranslationFilter@4a2fafb2, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5477d99b] -2025-10-22 17:15:08 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:08 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:08 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.367 seconds (JVM running for 1573.372) -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:08 CST 2025] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 266 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=266 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 266 -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [266] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [266] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [266] -2025-10-22 17:15:08 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [266] -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 266 -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID266: 成功=true -2025-10-22 17:15:08 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:08 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:15:10 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:15:10 [Thread-67] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:15:10 [Thread-67] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:10 [Thread-67] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:15:10 [Thread-67] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:15:10 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:10 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:10 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 12 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:10 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:10 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:10 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:10 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 166 ms -2025-10-22 17:15:10 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:10 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:10 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:10 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:10 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:10 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:10 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 00d55160-e146-4b22-80f7-20a02c838aa9 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:10 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@d122bdd, org.springframework.security.web.context.SecurityContextPersistenceFilter@72282ed1, org.springframework.security.web.header.HeaderWriterFilter@5e04b8a7, org.springframework.security.web.authentication.logout.LogoutFilter@763e3a51, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3dc63206, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@3ee99c66, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@63a80702, org.springframework.security.web.access.ExceptionTranslationFilter@30466d5d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@542ba13a] -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.377 seconds (JVM running for 1576.218) -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:10 CST 2025] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 267 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=267 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 267 -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [267] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [267] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [267] -2025-10-22 17:15:10 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [267] -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 267 -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID267: 成功=true -2025-10-22 17:15:10 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:10 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:15:12 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:15:12 [Thread-71] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:15:12 [Thread-71] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:12 [Thread-71] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:15:12 [Thread-71] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:15:12 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:12 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:12 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 11 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:12 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:12 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:12 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:12 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 148 ms -2025-10-22 17:15:12 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:12 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:12 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:12 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:12 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:12 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:12 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 2d4e9dc9-b692-4a8b-b95c-d9a880b3796e - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:12 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5e5e70ea, org.springframework.security.web.context.SecurityContextPersistenceFilter@2b7a73ee, org.springframework.security.web.header.HeaderWriterFilter@6152114e, org.springframework.security.web.authentication.logout.LogoutFilter@b8c187d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4278867e, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2b8498a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3d897fbe, org.springframework.security.web.access.ExceptionTranslationFilter@1dbbb76c, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5abb9ebd] -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.372 seconds (JVM running for 1578.054) -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:12 CST 2025] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 268 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=268 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 268 -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [268] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [268] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [268] -2025-10-22 17:15:12 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [268] -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 268 -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID268: 成功=true -2025-10-22 17:15:12 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:12 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:15:57 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) -2025-10-22 17:15:57 [Thread-75] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-22 17:15:57 [Thread-75] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:57 [Thread-75] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... -2025-10-22 17:15:57 [Thread-75] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. -2025-10-22 17:15:57 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 24.0.2 on DESKTOP-8G5GS0I with PID 28148 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) -2025-10-22 17:15:57 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 -2025-10-22 17:15:57 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-22 17:15:57 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-22 17:15:57 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 15 ms. Found 4 JPA repository interfaces. -2025-10-22 17:15:57 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. -2025-10-22 17:15:57 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) -2025-10-22 17:15:57 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-22 17:15:57 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] -2025-10-22 17:15:57 [restartedMain] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-22 17:15:57 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 184 ms -2025-10-22 17:15:57 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-22 17:15:57 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... -2025-10-22 17:15:57 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. -2025-10-22 17:15:57 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect -2025-10-22 17:15:57 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] -2025-10-22 17:15:57 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-22 17:15:58 [restartedMain] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 73bc6dbb-a4a5-4ee2-ab10-43244d513c81 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-22 17:15:58 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24dd9a48, org.springframework.security.web.context.SecurityContextPersistenceFilter@7365bab6, org.springframework.security.web.header.HeaderWriterFilter@758cfb1c, org.springframework.security.web.authentication.logout.LogoutFilter@319bea7, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@29943b90, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4fb14954, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@50bf9e7c, org.springframework.security.web.access.ExceptionTranslationFilter@6f613452, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@652a8537] -2025-10-22 17:15:58 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] -2025-10-22 17:15:58 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 -2025-10-22 17:15:58 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.424 seconds (JVM running for 1623.384) -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器开始运行 ===== -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 当前数据库中消息数量: 4 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Repository查询方法 ===== -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的消息数量: 3 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根消息数量: 3 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - [%张%] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [CHAR] - [\] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 昵称包含'张'的消息数量: 0 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 文章ID为1的评论数量: 3 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 消息ID为204的回复数量: 1 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 测试Service层方法 ===== -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取所有消息: 成功=true, 消息数量=4 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 根据ID查询消息: 204 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [204] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 根据ID204获取消息: 成功=true, 昵称=1 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 获取文章评论数量: 1 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取文章ID为1的评论数量: 成功=true, 数量=3 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 查询所有根消息 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 获取根消息: 成功=true, 数量=3 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 保存消息: 测试用户 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [这是一条测试消息] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [3] as [TIMESTAMP] - [Wed Oct 22 17:15:58 CST 2025] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [4] as [VARCHAR] - [test@example.com] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [5] as [INTEGER] - [null] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [6] as [VARCHAR] - [测试用户] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [7] as [INTEGER] - [null] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [8] as [INTEGER] - [null] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 消息保存成功: 269 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 保存新消息: 成功=true, 消息ID=269 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 删除消息: 269 -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [269] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [269] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [269] -2025-10-22 17:15:58 [restartedMain] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [269] -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.service.MessageService - 消息删除成功: 269 -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - 删除消息ID269: 成功=true -2025-10-22 17:15:58 [restartedMain] INFO c.q.m.runner.MessageDataChecker - ===== 消息数据检查器运行结束 ===== -2025-10-22 17:15:58 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged -2025-10-22 17:17:03 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-22 17:17:03 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-22 17:17:03 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 0 ms -2025-10-22 17:17:03 [http-nio-8080-exec-1] INFO c.q.m.controller.MessageController - 接收点赞消息的请求: 233 -2025-10-22 17:17:03 [http-nio-8080-exec-1] INFO c.q.m.service.MessageService - 点赞消息: 233 -2025-10-22 17:17:03 [http-nio-8080-exec-1] ERROR c.q.m.service.MessageService - 点赞消息失败: 233 -org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query - at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] - at jdk.proxy23/jdk.proxy23.$Proxy322.incrementLikes(Unknown Source) ~[na:na] - at com.qf.myafterprojecy.service.MessageService.likeMessage(MessageService.java:187) ~[classes/:na] - at com.qf.myafterprojecy.controller.MessageController.likeMessage(MessageController.java:97) ~[classes/:na] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.8.jar:5.6.8] - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] - at java.base/java.lang.Thread.run(Thread.java:1447) ~[na:na] -Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query - at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:445) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1692) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] - at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] - at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406) ~[spring-orm-5.3.23.jar:5.3.23] - at jdk.proxy23/jdk.proxy23.$Proxy324.executeUpdate(Unknown Source) ~[na:na] - at org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.doExecute(JpaQueryExecution.java:241) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.6.9.jar:2.6.9] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] - ... 93 common frames omitted -2025-10-22 17:17:24 [http-nio-8080-exec-3] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 17:17:24 [http-nio-8080-exec-3] INFO c.q.m.service.MessageService - 查询所有消息 -2025-10-22 18:13:15 [WebProjectHikariCP housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - WebProjectHikariCP - Thread starvation or clock leap detected (housekeeper delta=1m44s719ms856µs400ns). -2025-10-22 18:59:04 [WebProjectHikariCP housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - WebProjectHikariCP - Thread starvation or clock leap detected (housekeeper delta=16m18s973ms591µs900ns). -2025-10-22 19:40:01 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - 接收获取所有消息的请求 -2025-10-22 19:40:01 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - 查询所有消息 + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) [spring-boot-2.6.13.jar:2.6.13] + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.6.13.jar:2.6.13] + at com.qf.myafterprojecy.MyAfterProjecyApplication.main(MyAfterProjecyApplication.java:10) [classes/:na] + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_461] + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_461] + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_461] + at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_461] + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.6.13.jar:2.6.13] +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.qf.myafterprojecy.controller.MarkdownController]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type + + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ~[spring-beans-5.3.23.jar:5.3.23] + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.3.23.jar:5.3.23] + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326) ~[spring-beans-5.3.23.jar:5.3.23] + ... 22 common frames omitted +Caused by: java.lang.Error: Unresolved compilation problems: + The import com.qf.myafterprojecy.pojo.Markdown cannot be resolved + The import com.qf.myafterprojecy.service.imp.IMarkdownService cannot be resolved + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + Markdown cannot be resolved to a type + IMarkdownService cannot be resolved to a type + IMarkdownService cannot be resolved to a type + + at com.qf.myafterprojecy.controller.MarkdownController.(MarkdownController.java:4) ~[classes/:na] + at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_461] + at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_461] + at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_461] + at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_461] + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.23.jar:5.3.23] + ... 24 common frames omitted +2025-10-28 11:34:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:34:36 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:34:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:34:36 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:34:36 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 5 JPA repository interfaces. +2025-10-28 11:34:36 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:34:36 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:34:36 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:34:36 [restartedMain] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 162 ms +2025-10-28 11:34:36 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:34:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:34:36 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:34:36 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:34:36 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:34:36 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:36 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24f3a86f, org.springframework.security.web.context.SecurityContextPersistenceFilter@3c57fc50, org.springframework.security.web.header.HeaderWriterFilter@487214b8, org.springframework.security.web.authentication.logout.LogoutFilter@7fa5134c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@17b731b, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@59f46058, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@61c5de31, org.springframework.security.web.session.SessionManagementFilter@2821ac68, org.springframework.security.web.access.ExceptionTranslationFilter@635bc948, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@58680e4f] +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:34:36 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.407 seconds (JVM running for 1015.383) +2025-10-28 11:34:36 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:34:37 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:34:38 [Thread-32] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:34:38 [Thread-32] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:38 [Thread-32] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:34:38 [Thread-32] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:34:38 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:34:38 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:34:38 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:34:38 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:34:38 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 15 ms. Found 5 JPA repository interfaces. +2025-10-28 11:34:38 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:34:38 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:34:38 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:34:38 [restartedMain] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 170 ms +2025-10-28 11:34:38 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:34:38 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:34:38 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:34:38 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:34:38 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:34:38 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:34:38 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@482f9423, org.springframework.security.web.context.SecurityContextPersistenceFilter@318b0fe7, org.springframework.security.web.header.HeaderWriterFilter@62c81f2f, org.springframework.security.web.authentication.logout.LogoutFilter@5ba61b0a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2d07ea24, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@f94a9cc, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7c8af8d8, org.springframework.security.web.session.SessionManagementFilter@1bf4dcd7, org.springframework.security.web.access.ExceptionTranslationFilter@7bcceb91, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@4c3dc0c6] +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:34:38 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.441 seconds (JVM running for 1017.535) +2025-10-28 11:34:38 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:39:31 [http-nio-8080-exec-1] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-28 11:39:31 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-28 11:39:31 [http-nio-8080-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-28 11:39:31 [http-nio-8080-exec-1] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:39:31 [http-nio-8080-exec-2] INFO c.q.m.controller.MessageController - ոIDȡϢ: 3 +2025-10-28 11:39:31 [http-nio-8080-exec-2] INFO c.q.m.service.MessageService - IDѯϢ: 3 +2025-10-28 11:39:31 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:39:31 [http-nio-8080-exec-4] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:39:31 [http-nio-8080-exec-4] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:39:31 [http-nio-8080-exec-7] INFO c.q.m.controller.MessageController - ոIDȡϢ: 4 +2025-10-28 11:39:31 [http-nio-8080-exec-7] INFO c.q.m.service.MessageService - IDѯϢ: 4 +2025-10-28 11:39:31 [http-nio-8080-exec-7] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [4] +2025-10-28 11:39:31 [http-nio-8080-exec-5] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:39:31 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:39:31 [http-nio-8080-exec-6] INFO c.q.m.controller.MessageController - ոIDȡϢ: 5 +2025-10-28 11:39:31 [http-nio-8080-exec-6] INFO c.q.m.service.MessageService - IDѯϢ: 5 +2025-10-28 11:39:31 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [5] +2025-10-28 11:39:31 [http-nio-8080-exec-3] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:39:31 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:39:59 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:39:59 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:39:59 [http-nio-8080-exec-8] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:39:59 [http-nio-8080-exec-8] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:39:59 [http-nio-8080-exec-8] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:39:59 [http-nio-8080-exec-8] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/3,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:39:59 [http-nio-8080-exec-8] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:40:58 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:40:58 [http-nio-8080-exec-10] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:40:58 [http-nio-8080-exec-10] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009 +2025-10-28 11:40:58 [http-nio-8080-exec-10] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection is read-only. Queries leading to data modification are not allowed +2025-10-28 11:40:58 [http-nio-8080-exec-10] ERROR c.q.m.service.ArticleService - ȡʧ: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement +2025-10-28 11:40:58 [http-nio-8080-exec-10] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles/1,쳣Ϣ:Transaction silently rolled back because it has been marked as rollback-only +2025-10-28 11:40:58 [http-nio-8080-exec-10] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only] +2025-10-28 11:42:22 [File Watcher] INFO o.s.b.d.a.LocalDevToolsAutoConfiguration$RestartingClassPathChangeChangedEventListener - Restarting due to 1 class path change (0 additions, 0 deletions, 1 modification) +2025-10-28 11:42:22 [Thread-45] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] +2025-10-28 11:42:22 [Thread-45] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Destroying Spring FrameworkServlet 'dispatcherServlet' +2025-10-28 11:42:22 [Thread-45] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:42:22 [Thread-45] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown initiated... +2025-10-28 11:42:22 [Thread-45] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Shutdown completed. +2025-10-28 11:42:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Starting MyAfterProjecyApplication using Java 1.8.0_461 on DESKTOP-8G5GS0I with PID 26100 (E:\MyWebProject\MyAfterProjecy\target\classes started by 30803 in E:\MyWebProject\MyAfterProjecy) +2025-10-28 11:42:22 [restartedMain] DEBUG c.q.m.MyAfterProjecyApplication - Running with Spring Boot v2.6.13, Spring v5.3.23 +2025-10-28 11:42:22 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-28 11:42:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-28 11:42:23 [restartedMain] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 20 ms. Found 5 JPA repository interfaces. +2025-10-28 11:42:23 [restartedMain] WARN o.m.s.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.qf.myafterprojecy]' package. Please check your configuration. +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) +2025-10-28 11:42:23 [restartedMain] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-28 11:42:23 [restartedMain] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.68] +2025-10-28 11:42:23 [restartedMain] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 175 ms +2025-10-28 11:42:23 [restartedMain] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-28 11:42:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Starting... +2025-10-28 11:42:23 [restartedMain] INFO com.zaxxer.hikari.HikariDataSource - WebProjectHikariCP - Start completed. +2025-10-28 11:42:23 [restartedMain] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect +2025-10-28 11:42:23 [restartedMain] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2025-10-28 11:42:23 [restartedMain] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-28 11:42:23 [restartedMain] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@472539d2, org.springframework.security.web.context.SecurityContextPersistenceFilter@11e6e05f, org.springframework.security.web.header.HeaderWriterFilter@4320f18e, org.springframework.security.web.authentication.logout.LogoutFilter@4a87cab1, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2e02a641, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6aea8e8e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@575b2836, org.springframework.security.web.session.SessionManagementFilter@2124f1bc, org.springframework.security.web.access.ExceptionTranslationFilter@c6677bd, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@26b348d9] +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html] +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.d.a.OptionalLiveReloadServer - LiveReload server is running on port 35729 +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '' +2025-10-28 11:42:23 [restartedMain] INFO c.q.m.MyAfterProjecyApplication - Started MyAfterProjecyApplication in 0.473 seconds (JVM running for 1482.252) +2025-10-28 11:42:23 [restartedMain] INFO o.s.b.d.a.ConditionEvaluationDeltaLoggingListener - Condition evaluation unchanged +2025-10-28 11:42:44 [http-nio-8080-exec-2] INFO o.a.c.c.C.[Tomcat-3].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-28 11:42:44 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-28 11:42:44 [http-nio-8080-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-28 11:42:44 [http-nio-8080-exec-2] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:42:50 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:42:50 [http-nio-8080-exec-5] INFO c.q.m.controller.MessageController - ոIDȡϢ: 3 +2025-10-28 11:42:50 [http-nio-8080-exec-5] INFO c.q.m.service.MessageService - IDѯϢ: 3 +2025-10-28 11:42:50 [http-nio-8080-exec-8] INFO c.q.m.c.CategoryAttributeController - ոIDȡԵ: ID=1 +2025-10-28 11:42:50 [http-nio-8080-exec-8] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1] +2025-10-28 11:42:50 [http-nio-8080-exec-5] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:42:50 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 11:42:50 [http-nio-8080-exec-6] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [3] +2025-10-28 12:05:55 [http-nio-8080-exec-2] ERROR c.q.m.GlobalExceptionHandler - ·:/api/articles,쳣Ϣ:Required request body is missing: public com.qf.myafterprojecy.config.ResponseMessage com.qf.myafterprojecy.controller.ArticleController.createArticle(com.qf.myafterprojecy.pojo.dto.ArticleDto) +2025-10-28 12:05:55 [http-nio-8080-exec-2] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.qf.myafterprojecy.config.ResponseMessage com.qf.myafterprojecy.controller.ArticleController.createArticle(com.qf.myafterprojecy.pojo.dto.ArticleDto)] diff --git a/logs/web_project.log.2025-10-16.0.gz b/logs/web_project.log.2025-10-16.0.gz deleted file mode 100644 index 6ee391e28eb6cf8e5e7996e8093665a859354c47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11546 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 M*}R_X56BPy4Vj&7Bme*a diff --git a/logs/web_project.log.2025-10-20.0.gz b/logs/web_project.log.2025-10-20.0.gz deleted file mode 100644 index a66ed5ec7f061a42e2b909c5f2b65e2dc6a669d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37048 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 W$bar?-ETA4=l(ygLu$?kO9=qxJaK;j diff --git a/logs/web_project.log.2025-10-22.0.gz b/logs/web_project.log.2025-10-22.0.gz new file mode 100644 index 0000000000000000000000000000000000000000..fc4f5b4faac216f31233469065a33f6504ca0843 GIT binary patch literal 70106 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⋙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 dP!;aH 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 literal 0 HcmV?d00001 diff --git a/logs/web_project.log.2025-10-26.0.gz b/logs/web_project.log.2025-10-26.0.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed53ef07ac11276efd57ca564dbd78526aa7a162 GIT binary patch literal 2587 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�vMFDImV*b@3v$a!gLWYn^j6A>6j(M}(25e5f)qlAQ~3cn@mlm# zVcjt;b&K`FAA%1pHM$@7iFgTFGhuuz)jj?!89Nk`%9}*PzUf}k&f3DL5Kz)o;s=)u z$a8^*u0w=G&;~$so-W`PoB}y=M0o(U3m9xlK45>e^RVP~*(qQU!UM<{IRL~+pvR+( zvvmj$Aw3Oo4DSI|VvP=ff}44mDY$d~?=0FmhRu8}Sk%*yOo|XglUs$>JXbL~(fl7X zhu*;O+t|q3pTw1}$=?)rD=Y4$iI%nxLO7bqQqJ;a_jfj8R|73=D@RyMgp;y2l15Agk zDCA=W^944|j{3Kt?M*r@h=u}E?gpSN34Ww>r_l=%CDW%F@O!w5tgFySxmyJ2r`s)} z}>ldG;jDVbxK;$*0WfB zK6##6lE1a)7T&<~FV)ZbKxw79D{K#TkOy}i!n78Djs_Y+#P z-^$O6B2ZL`y#Jl07ZDJ4RZ^gMu(eCM6l(K}70f|aRA#Y)1+n-C{SCjMuI3dztXb+=?Qx3TqU>!Ut_2Go~eT4nM}zC3$7ljN9k+~060+m+>xGNJTbBrLl~gO&n^EC zy%;S*(i*^lo~8ph5C#{30|g;*pdcg;LL@=_re8z<= zE-8`4o9hRdQH8EtE1mHd)53A$TBTVPqnq@-0zPlcFki$YEBW%YWFM?ty~ z@TFY`<%;fZPSV;iuBg<{tOV#9NY-S_%wE55wlJVRlqM;rwWKap)Vd~xQ}lssgG0FD zv|q$3)K8&9sw>n3Vj~htTE=_@Hzk@=GXEPAq)@PD=ADp_Swutg@i9>n?5oAb{%1SB zD4liWu|y+}B^r4wsy(0eS{kTufh^ogh1Fj##6!{ld{v{&VgqiX=w3rqH?XBe1e92; z{h4Nrl>KgoaZ#YBzWjk=MRXL16$8a+TX!0QexUg<8)|Cwu!u&YV?g$lsDAtx9Wz6s zV{8=M)t0ek74}}`aq0PB^KNcMR9VbKsR%nZBIKd;LG$omheEMqPQ-O%Kb7H+M)VCU zRfaP^(!R=tD#FXmwBJ7-Uyzs%dj?D&3rZt{s5q!b)JeJ1Qu0hHf2vou4>`v~e!YTb z>Ne9_*jMml3?O4C;3PHAdO-&`y1>}7rrf|g@KpJSY2{*mfJGoUwR89z#-ns#WQ@m4 zUOW-kGu%#z*wwR)Cq`8H>(fK68+%sZPGBg!bk+D z2i-nlJ>x1SMn~m(S}FH9T@3b0oFeI%JbuT6jd;*ar5hw+ErV=R3n&rG2@Qep+=s9y z@q#?2a7?Zx7W)b*@n*fxq!k|<(U?}N$k!33;xU9{@VNP&OoTlMEem?4v80F^z1`gebmn4r!el?}h+{sDIHWwC7G{4T_uw3s^sxUrC5l$RxsZDiIkQINQq(C&Js{ zz=q@npN@*CWKo2r%z=>&&{dMA^E-~)&ZI1E3q z`nFUW<69njVr}gtCMIp2+Qd!NN-g%N1~X)0C4g9HC*^%Lk4s?*dfRtydp_*U?!5$n zp3nv>TjuIN3e`RviCXR^x$;}Xu942!H#|R^gEs1!>o1s9j&kD^1k781F*6>GgZ8AD zqWiXYT%SY>{!|4=6PuahJcGA>t1IHiDR+Uxgry-D>Bi3A}P^zbOMSFSN-#0<9|wyWM(pCigksz?54CShiyQ) zXILoefi`u_w3-wR=u*?vsuwq8Sz`sIVJ5I%9a&Kj;A1uGUQ@zXvKvDtb<9|<7bJt z&0~k&RQ^BmzB(+bt?k4qT%WWNih2D6N*Y>$5rg z6|e4}m|fV>fC=+c`p3NYqQ@B_p+S9__hOB!3yrDG>M4JIHy#{t1unq>S76IDSr=Fk zMelAY2)h$t3bZ3Q!qww1!ADg-xMh3M`*bs4b^%4fhA*?KZ4T97W55HzMhyH>SBNnU zw|gUyL)Ntz&Qe{p9B#C0+BVuA;*et-z%$8OS=B7NSqSbh|BdM)CxT9 zZ;-cx*%X)s{}x&3@Gb4dV>%^wcBo6cdI#0#gXAq z41K|85m?%@^lye);P$k`B+!94VbUj9Sb~;toBcg&gHRJbN)$4b4}c4T1z>X`Q5Too zi&tWes4=-Cb2gB%`{EqGa0TS;nfJ-@En^S^4rX`glrln z3ycCQm~iJryZ1q?xa~xhIkA~P8Vlz!;8NPW@yFjr^}=OXn^p(e+CWB25(3Jf+FD(9 zUm+?)6vUQR$b+8J>`G4Bn5Izo@;*AS>z>^V=z!^btFm>m{#50!@*Vise}osXq7@;> zD>jZt6hk8bUdWt62Vc`5_*^NYib3M;Tb|l2@>KjUWf8$|q@^g%mR?#iDuUA_OnHE!IpI!$8Dmau}?NE=u}@II@K45PW9=d zQ+>}COOnuA6d727WpgUnuHmvDefjbjaiKRYXuWxQp*MkOy;10{oui2RWhmJJO*0xz z%y|$^x{MfwGi8YPXfUG{M-FC_A*Yp_Z0LdiFhp|Eq^&c;(v-nFimk1dF7==@ac>rt zui~5$-go!$EJ|ZBTcNS*v_CVKRlY8C70(voYZtQCKZdFuwt%H-hYH|ZF)pL7o;NR` zF7w{;;?ESC!)bvDuxU~}>zD5hjDShtgdbfAiz@YL8iQ-ZP{;i>H$Kc(0r0r+sxp^F zfX89PbgV_~5{fS2tVP`iTacVHk|+H4Bu_g! z$wPxq@?3$VlRToC?tUQ{aLmO(ZfL0@YpjBdTIN&ad54_FVs(mPaV%T}od9lMctn$H z-H%)>GvC2sp9~j$`@59w z_VP^%qDBwUVOSZ>&_u+DSGU*YI-GC;E}d>%c!*~QH=Hfg`q?lKy>E7KYPM<-%9 z(74ss4^!uQ`?^IPv)YpdcE%Hk~jnu3}7sX;H%OIn;_KV~6wEY8&rN^wahW-oCHxZ{WC0UZ71@f+#|S!56pK~2E1gy~mEdUBDalgu ziowmHSsBsSD-V>k!$Up^-2`b4eK^PjlP)1uXnN>>+s5jlx3PNYZEXK<+gNzFAtRFP z&CeYYkO&0Z`c6WUrQ*`A7pTH(q1{{?nOC{Hw_l6H5n21~H|?^W=D86jNR;E~TR0+) ze1HUiCs*a_%gdi}cOxGP|60uxIWu)5`blqir>t6QiHeEF>`^6SBC$h_nI%UzO|^Sg z-htIVugdVmjJ0Af=SYv$c)RIj*{`4B?k)}v?iHTq-S5`-`-RpALf%BFUk`rPI)ChO zpLE^Hx-YSQy_=mmYV(R0`4mZCz0fl!r{j$ptt_FLf#^&jD?a(rr*R)0bmIK&Yn;X> zJRJ^>dgSGNDyYi{q$jRVbkw^y^$LFxvN*RnnT&Zn*?YAv&St)csjv1Zorkc8sdGK% zKrZ@x;dp6-$w>O=0@KOB!I0BxhepGg_8DNsr5~NU5Ho1;O}rOy&D*N4Rb4n&$C5)AA$k1_AP9;!Rf=`o~cHm2{4t3fLEd(UnP zy!;wQE%K3^kN_pKb1-$mDZ{|J;FP`P;okp^QwG~RaE4C|UvSEla&`u5j;NOV501v{ zx0{B9KF>C2>`oDGyUx5}(OY7fb%nmB+Vq_`aoYGc=BDwnCU3Q{MHbM728u>%9Fxo3 z%gh#f=3Ty??@iA0oj0w2(Mh4p65&6|vl0|3DLBfXsEg&CtX(}nUcs(vVdeX@p`h6{>N^bvS{>a1q{jmLmW$MLccby3rDXgGxBj@)}N4e^k3X3#KbyoO{ z$nNR5q*06TJ9*fx(L!Ml7lvpn&A3$UA|!ijNo_HgTVx8?XAUSsj^`KGt2l*pR*dkP zaZgNN(7spgxwAr1)KBLtV6Cr=$l)VxDgH!g{ z`G3VJYg14WuXi@{p0hh?OE~&?-)W0b*x4b&G1GFZ;;Q})ZjVBZ*7HSP%~Si6+>_&_ z8>K}sf-fg)Gv7~ZPny&ZLk>(T;iFRxdnBHXc5BNu{%xO|LtW#b<#9G1S>)@@`nhMr z7^JFJR5u-?zv{Rg7H!g%e9&wWd}VreUg&O8J+@)RTjP`@@@#`#y_DLbZD==XBUp%B z?nG`MH+OXP-0|f2yFi;P;i|}ZUMyc6XJNON=4AQTR&%H4C?nopKC2#K6JlD2v)z5C zt-YfGr<#|qc0XoNbHtUqz9_Xt)wIM>Yn2g|KNkUfFEcAE1jY~NXmO{L{e9fZ@l#P| z6m^);_GjMb^G45Nf0^qf##6fw7u>pX9ac~2zi}g{OTL25U2o$hPc}K0YA7$0IV0ZQ_6v3?X}#dwk>9MZs~4PbadUM% zJDA%n6p8xq3c(Ke%iYbf05yRZo8$JN0w92%5Tmx|i^vDiNm9U~>9_V6H2^kq7q^n* z!~`ssQ3(*5Wjm$4(5DSx2cL|-HPTlHB##)ih?}?z!fMa&J3zk_)93XympnNM55P1b zo`3kH1d;Eb$T*?z=k_6V3CWGm(a{R2Nz+LP@q3#NOj~oYAepEvu;-YA%-@+qg!;2FiaPPx;0S{r9 zz#DPsm+?$r%rQ>(UcGbdz=Kfk-nd`i4ydVFfHL4!1rJ1 zSCR4CLf=o>e?#O07iFX`Q1Gy~nQV3HXRI1R4PN{{CBV>uUIY4tJys2%l?efh%k5Kj zRna}1g}>&GgV=T#^LSGhj*GVxyeizx8)_4Dv|d0(E3Iq>@Wy5O@PL2Zy=B`$`^gc5WEb=X7$5B#;s~>OO(D>q(#k=L$aQ>6w z?DY6sZd&5&0cTqs3U-{?T>rzLPN==i?xc!|-ctlQ9;cPlT8o0$Pc04k(Lt+m$v6w9 znbp>daEIEm6*%AtcV zyEV;T+q>&*s2ms9xz@P*RCo&1@2)%~jyC#Ud;Z0(BEgM=gY&-AeoXaoFNUroP1Cmjwqrawkcjg4v5<@k?1KG8fKEAVu2aNnPrSUZ_`l62}elOCwcV7p>Bwb2#O z^Lg!U(L~4A&JX=`$#QX*<`#|v!qd!}=K6cM&~uSlL@LFA+ur(E?_-PF{pI69cFAL6 zqYuBDn`5Jom%663S?-^d6;`-*Zn7EOc1C(fPy3cnII?65o6Ja@TJCO4O>|+O54Wa? zOz|dGpT>;Ifd$8`EFyUrCNkdob?Jo>$HWs6qoy$^GdXTMkH^`p^XXmn$z;in6pRbs@Cc%b^M~yB9Gm( zL%d;qZ@`-T>3(;7dT11MEbJI(A9)Jc_ZwYGAL<~5}iKwVbKMJ zA`HzaCVL4AkPJ2!4km5RP#}5sxD6%L%Rz<4S2$YjQMf@cCK4QfKu(y~?*{zSFqqUp z7@EG)d_iA9XOIC9ONKn)f4d~Q!q?Z@HlNLZGIFr4;+kRcv3X2lF2MPF&)4ed2CV}D z*RqL7Dg*lZ`g*?6T6kC(wr(i?+R)7O^#Z;)jwd!llplXq?-$h+oM}x4Kll7*utpYI zTt0TAVS-{^llQvMLGmr(?&5g!XLmr*CnLBgJV|*ce=okk&cw^^BbQhLTo9@S_uR15tmy^(n6QEqk*;T^9Rx|oD7Hfi?6(P?>@dh*2fSK8E-T59{{ zCn8@%3b-B)QU{A@d3=0*p6xIj*5@j`0>vl#(O%yYHc!8F&{qQy_a%t*cfV5qitvZ^ z72z+~KR0Zfq&bpV2wse=;_-90|s5I8D6+-}Ryuc7wbPTnd#^Palz(K+v7pPzfZsl*t#2R5%kbF7EoWbz&reMf8_fy^Y9|Vd;jJA`lTNg0r6u>n z+H@c7f2baBD8BI~Gna?ba^JI7WPI-!#xQBMc;jQ$V8aI0c`jvhLzSt{ZKtibPBlB) zOWW<&TnekTHgJpXpKff58BO!geiMAcPI>NDVNnJPOwmYpJWw~p~|K7Cki9;pV;$JebG>D8hM=~ zgmWT3GHBCRHSW4)W=%y!QE&aPx~cAA+>x#672fB0w|HdT4}QcsjlNi2udA*yUT)v= z+}ht?Jey!!Bi`y(uHO=Ge4_vMjQ#Y-)>Qli?-2L58Vk(Xfy!;GOfMI-<1>iLo09?cPe$@VY=>wppHu8MS zX2EHE;IZw#0FNEUx5s~_jr>Z6@BJ^-{L`1lKATZ@<%IGz1E>8K*R58MhFxuC``Yp# zI7!#rd;XSn?d4FuPuthPxoza%US6fJdiAe2Un^Ta_>Z^#{=EH+h|lOtd}y}8ZX;KD zS$jFKAMkD#w_j&KQpyE+=C`k@CL}Vqk^clAuQTqvcdeb>GgXKTaWbvMRaNCtydAVpCIRsqP=Jomj5A*;(E)lOGdR`5iY;eHNI z!8;N;mDeoda+q1E{X9wp8nmmqnc9rDOhhRe)wG76-Eppl<%$Pk78)|TYv@(t6nyeq zNZ-!Ay{_YTCz^RwykuZ#`KGe*_0s@#Ki*IE`VDO&#W)2*-*A-u-qX!xi?b;dvwUs$ zrxhd6=+xE*19e^s9qF1q3UEB7j87IHEa zEa4UfF;WomrUgZK6SElw0yY?cnW3LhmDEU(%L=%F+d+}p1>D|>hTBQdaJ%;f+|GrD z+kIg{q^ zj{B`dA^GZ&^IR0Av-u3lT){HR>TDy~{3Oqaomrwl!dMC>qrMaGGBBVQ7{JdNaA4v^ zKt#AA``-6`+KWC?<|RP7XEAzZAw?7D%(_mJiIRj9w=_4I|JnvZ!E9yMrfFrTawZFX z1G}rT)P_czKcUg)LmsC3q?ZCDyOp$x`e?)%8~OT?`^{ijFph`#n=8Gp#o-t(5?$QiV5B@RzM5P;;*Q{&A=sfaynX2V?aJ< zjrdrb>U=@!+{Ru(d&R^Huh<5>Vi(#gwxhkGE!r#g!2~vzQ5T>90L}iO9t18q|1GIg z(HJU2p2TO+1(SlZ%#&s~jJ%WgBToh7E&#u4hIYtEU=Gp>Ky&U%-^zJBhpNpXNsa0o zu*VB!SGrn>D@BYc7&KTENrx^ zBd@xZp$50T11Zds7=%2-J1`4u9OkNaN<{fbwXr=v(-7WBB@cG{kWJif5NqZe4r+?_ zVCw4D>`d`FPCkgtr^-AY)-Ul5?vMmkN9YM;zQ-hf8=5Gz{0X(Y2r4en1*F@%Fj7Z- zM3r7GHL@2K7NE1p$w6IOlO^;djTs>6&tpiD;}k(5F#2(abrZq7SFjUuI?~n$Ipq4f zh&K{;dflQN896&cYwJxgz|m@JMm-*)g)K2iG;%G4@1sZnEp)yM8JLQP6x5P?1JjDM zCJH9)Lz{@Zt$U6J4kUKEqD5DbxZT91NW{F(jvGRjE7yA3pjIgadl1&ia7WOL%vTO- zFY`|AdMi4Ysf%bNk6-qCvYF1;y1-ync}JM2H!3XPo>5BYDHjWlJc`(Hk8OA8Tgje{ z<&_rmJ`duISnKp@d6>dy8^1iRWq`^15(!^ld-xO)K|jVE?E0cl$`FZrOo)fXjeYzY zMw#gQ8O7l*Gw^ySQDRZMj*w8lzETrV_^6D@g07*B#2d7cc!f3+PCU11(3BMM3j?7) zP7zC>|JvGQIA!M)!{2#*eTOzP&x>9HQM2+1->x<#9Dm3}2;NKqc8XP~vWnI)z|FxQ z62xxvMn#|rTagk7k%wQfU|PUZ;1Au?VZW?DuKM*6erc-3M@H5XZxWqsd>*zNS_T4X zfiP(L;D{+rW}XxA4OqlGzru(<0i>0GK$&!ic$OGKF;(`vskf+sRl!aP``Wmi<=_o{ zefe_cT6-wdQ$)T&XzeOT$WZHWInV6A|LPpBe?a;-*>_%YQA4lsRp@vCc;=%Is*Ghp zm9eUCDvAk|1-VyB7w0Ngph2%)!#M zKVXYV`)1p^$$#atk%C`_{YT@G6s!&`6VMq(H0Ku}L+t3p_b>(FY;-4V!|5Yc=t|`q zDeG>k3y}GS)*8i&TXWDys;TWtLtjoC9n#XbpF~6rvr>PbTC_!kaAoovM^J13sMgKE zTd*TK%DFe&omX4g7h@YmC|i!Fu|JQJPs5~(D1j-6v5x2#A=(tiPzXBNAg&jkHZlPV z`~E@Bpf2jxU`Y4Fz9jBfzZs6pL)c=OBazlCC`>1BL@f(G<%QW;!1PA!JQ`L@X9Z-o zT^}@__zI0D){tGHLF0*HXgm=EzOo~V&Ut$woUgP$aCAJPK|^R_Xb3GF4WWet2#wSL zKxkKN5OU&xvIEE$OVT`OWaQIZD~pZczbzTK-A*K*!FBhkN@r%f@!hWcex(;E6FnC> z1ThB{Pke+rfz}e(h1T{)m6mWJv#5kTdoRO5-2i4xmKD3W z7s9L=a?`-pNg6t_kbP)S_3&3SM$9@8i=*f;o$?VNv{4%XB;b+(8VMM&z7+HE^&@O} zmXibn08EUf!%3Sm3`k=@Z9cUDx;Fp6;zjZ_VFBzkLz^0k;U)>bNU!ck*O)ktI>a)Q z=*=)<3ejeDC6@F3CHMwlWY{jI_sWbZsYkNKDD;|S?r0hzQZ=F(+I-vpD5JpXje{S` z4(?uy!6fv5MBQY#jN&P>p|6U5H_z3!@aRWvu3K;43FL?%J-OWfU3dqJi9Pr1mno8G zx*R*H2ZDJb{xJ118jYP#QXbj)87e~Mo!5N|_K1cyo+t%69~aUQwLFM$xcLmx6cec* zDBtVS7X|oTJb^N3D@%#CvXAF~Qy&D(BD5tFMX(|Gktabp8Fh9mB3M6h_!f*A5MisB zjcB3=iH=qr9A}B_lD&|Mh^&=xBD=RKx zmikn?I?jhAa)`C4GJ5Vi3c08;5KlL9-<^Y%+^#?AC52tTJv?;f2ZL_$PE#+;q<1B= zNTo{kP_h~IvxO1qc)0gzhz%-qp0twoQg4EH z#nMEQtFkHO@n~z(qK{BARiK@{x=;&)zRwmb6OKTd(#dty;ofz%Mrc7WkkrNUoPgq3 zn_Ji0^W+n%jLv^)AH#R86_u|Lue9%fJXdIr$dFOD;XG3G3=ZIb!TL~W1?4lVV*6(v zPonI7w?SC(4dfj+pOax&-7(;R5rI0Bz^lo3a=OE&I!`G|M~g8)A*a@1rt~E=Z9_Ix zppKjlltxN$+jiq~gv_B9FhbGpM*!`9?9lFq0_}b%(C()VxE~Bd4}U-8|4gh$W3I}D zwYr*i$_C|haI>!022wr-DnB%fuPk3lv;6~_PbWYvgy4nlETK}DDvi3Cp7r&@NL!^8 zWT;728(}wEKHL#D=-+x;WhpCD8+a|G4dq=dODE{{tr`X$z+`116{FGu++pSS!lr3y z%uwiUIhf1Nzx|Ig+W(Z`;svtgMC#umXLn6U3x%%5prtDf1v(Df#QH1E1IX1e5KRXR zMAHG~0826u&5~rfsFu}7SIg>yinW_9%`g8MnYRy=$z~)+Qvw4`l6(R5u7)-*IV@L?mD-g&4Yc{xUl=b9wLA3HT-Jx93&$*gSzd$CFqe$y0^7d z9<#Qxg}ob6(isUi0y6`PbsiX+^`?%&%FIt%<{+zVpjuhAz`7Emv^w3XZL3 zr`+pB{9MYQkB#o*EBiSqA%{VsVO}z(AYm3C^P^|NF13AC6f^>2eS7P!lCF+JySN461KKkhD=!Wf7{@H3 z18>c3Xr#(s@KJgiN2sFeQ-4Y^J{OuClKAo@Sg=__CI9IkO@C-W(;u%KK1Ca{B<`WE zS+!wAQKh3rkvnz1$M+a*;5Z{!98CEz`u1$^^T=hY@<&T2s3yE$F|>2+h|&Ihi{kE( zS-brQL{ZM`CIc5|wXpXqi=#E$eR(DGh$7n2+lDT;5KXh(b*W@%j#Bp?*?fC7yzce& zy&dkl*ULf9U<6d)80~knbjumN_KeojX6dE3qZsDPyUjBBb8eJ-BZ_7(I{z>cjX1B^ z?G4@^3QBv+ChgX#^p(5rX^T<{8MT-w^;BKp9nA${YzyriZArLy%$`hZtRiOB-EIZe zqCpCzVx4sWj(p4$wx7dz3gRPl)}#ih#c#>N5`~A1T#kMcf__HB^>cfOBAT+#^UbWq zOfImPxQzx;zzD7k&~6pjzc6WSgC@~8H%cZ$r&>f6+tF36a zdcf1lN}*QH`(Mg!{9r4WTMdw0Mn$DJ+E7<-Q4k^p<=-@;B5z`TMoD}@>LbFY7N2dPE)XtAb9V8_!GoK=TQ zj^3Nvg(0PMm77$bC1bsWQ>}}A^kbp@&{Hf;%otlB@~6EB^w* zY~(4ykcMJ%khmFWLNRwE4PA;P1#7w7vVdep%O(pgn@D{in{>2n($KO|M9bzWhWdd5 zBFk(AgeoEYMBIsuUW_y2<1#Fn74&&&=u#XAk)3WmDnVZm>}H4}k@@(lJds9C9mda; zL3M5~+1Q6_#hZ&*1wQ(?dz<YQ zpf;&EY+~p)BLny^BX4UHXsZ(9WZis+Csy*da=YX0e*aXS%)IJ~3*rc0ojX0q6!ejb z*T;Pvt@ZP8Wn^T3N;sLDFkF@YXa6dcs<0ckr3}!yS5GWZ)l5Nsb4}~r<_@e=77AAO z$Ok6}h^eWSiY>?4=3Qad9u3*0dOqs)AGb|BpZ=&^oN#mAJ9*P^&XlB+v!nQHFX4FA`o(jz zAwVPaaz7YTJ?@dJ5vd>BJ70}7T#Ztfp3&KY{#-MfNPc0pKUFbWKDHKj=63exg=(f} z2<=%vtx?O0nOtdL_U9A$lhUKzUlzaCO@>ED52N>ENJ+Flua<6%)?l90^UTj8qBgWp zB-@OH_4gPs~bf&tGQj83Z`<^sm;jYUFg@Qv&3o&f@zh zu|(I2;fz_9WB$w}WrLHc#Gd7b%gY+O+F{GydfuAJpy#F0Czkg=<<)sj+>PcrIVVqu zk#F37t$U)0Dps6sIQp7DxN&u1!Y#>jeUmDYt5~#P<{cbeC>W+0q!Ds4}bIwW88-EfWzs z{2B65M*FYK71xKx7u}G|ZoXMt+qen)-x61-hGU9iKYc&Wy;t)*vVNj=And>IghZ#^ zS03?gSK)M1TBLrnA5X~9b@OLJLDt(Jkq@SPhSHXI`DrXZat`4=_&JBYDByHzy38tQ zKAbSC*1O3(l>988hDose);qlNBWm?M{Ku|82IuppZi^>%Gq>7)VN5XB+Bg?nSXDs$ z`rb0Y^gJ!~9$ClI=B9b3NzFA(K6g*U(ucMY!&G$4<&E*KWb1f^`BgG;6-HN`Eq_&V z&p0k~M6N}us+zu7J@B|s^RXzxvv7Pple2<$E$cbICkOy0oT8ztE}m!P2}w>m{A=|C z!nahHs!!}ow}~HAc+>}ZKR~R*LlKeVJ^T$rw;c6h`y@}dZv72|MP7AkUG0-mw8Js? z$Wqg4+{R0n^U{Rk7f2J&oN2Lrjj0*SnXE&4&#yBcmug^NXEG;dLYQKF0d^zD$_e&*<*n*I%ZB>t^VWy$U7j7SRloSZ^$;eHJm-$!JI-`>{}B}Abi6Ys z>nSNLKA}3jwb>gcJb5qHo~WZcrg)nP)K$9<7@A%)q|(;dJ;7U zGgiV>8kN-^qnSjSN!0Fx1zCP~$4Tno)oQ)UcKX6;a3Cz^A!7JKtIJ5dZAK z=t8v@?pcX+)=_Xs3%b>+RNQqq{}E=1LGwO4`aD~z){|oK@xz*9lEC#3U7SwTwF6FJ zNeRyzzF3$awU;m0^F4oBcBseaF>Gn|^YP52*7pgW)ta!c#q)0(z6ylN&@9*Z+V103 zVEtGI$k&FfUHw_3Whgde?m@A=?&TEq`*W4oYsYo2?Ns$_iu`ch+L>h=mf$>|EcbA_ z-u~TAHKd2YGVzCE_Eb>CBYVDvu$P?8NbfCX&XNZ@w=8($xPyDE2W&s?|2$Yf-e{T9 zii25S!qB}=VsZWFdd!-mSHn|2C!Lw^yv}+x?Hj7KX-Q7A*F`o`N=}L^c1t(DY(_g- z;GV^839o9a9=Hv{bJw~Kryee!HPj^;hd~P%9(xX)o*rAe`u|`!gvo83pRb5?SU8s{ zKKUU?N<~7bQud6L(JQlr5pgFh%fEX)XB=4xU79{u*QuD8Y5Od35@DljUMgf_D(ylp znQ-W?S3zM_;e(f1@=>Hmv5^nU%ENv@>R`ir`=^gCRcz&2iZUgY<507=&^ldg0Pb-g z&IHqvs!>7h6x9%{>(@pSS%amAi@S}3#}B=Vm5#8~uTM*dymD&RK-bL8OreFbB}J7( zzKSK2%G1quaaERxP=&!k*mW>d~=a1~C_ zZ!P!L*G;HDdJyMic%l>Zye+Qmk!6gBn|1ySad7H&9aq;Hr%QE~G;VXPtij}Bsj2jM z(>Za^x#0qmy~s;@}lw-~s2wEud3gDr2q-q`)Ys-DqW!Gk!v8p=;vw>~Uq&q_D;t>k8)!(OL&O5Q zd3+6&iULh^t1%>{LqiIbt83;NgVdBML_q${Fl(#iuZ62{ae`Awl2E0P$W(H-(MSg!Zg4<-Hj5`YHWV9;H*m>`s_Iy9$ zu2LKL=7y~=m27({OH^C26({~m0EY?@To(7P3egMK6-E`J(Y@v#i>JkOVT zwFsVKdVk0m8C{IpfXo!WM1K2hzoxzvh}`K_B)=*Zr)s|-=1}43{{(9ZjL(z^gvi5* z5c$R+We6T%I)p>Tmtm8T&9?ge>I>1n>c z6z+_E5Txba#`Gl6nRK;?ww-$M;?(JyE5(1-8Qa=_68s-J^Up#DpWYY6X9E}h#~~H( zalXGTK3fSWswz$eMX8}`5uk*-#?YeioQAgJ2;?Vv!UC6FTXGng7KqNn-o z7D9z;0{}=SW^3}^4}u72%CV>zfJ{^Xqy_$6xX;9Dqgh`nF*F~X3b1uLl?9NEqET4@ zWg-EP?bpv#wjXpkC>xaN@~|0B8Q`R3vhP%jS84{SMF92zn~Eg133HPaSiJ#H#}=3Z zA;qtCTbqm_+o^?+C3)rox-&XO@okjaE{&oT*3fN2jwV@% zo{CaQvN@>j_fZ=7WR9&Um27kA1<;jxocPN!G|EIA(zu+;L`b_87G@ z&?K)Mx;%+p83?A0Nw5;Z+)zd!Ai2~kMSv`_EJOhDCWbfagO)UJSqHOo9;vT^ z)fq9MF_@n%`%bUPwu4-S;Pn?e zb((xMM&%DFz5>k4;-$x4Zd{~n);J7aY6^Y%)g;Aqc~;vkf%>tIR+bxQ1S(+lZRbJQ zR;$?X*}Q+-8|gd_;$Uqf{|D=&>v__+-m2?)<9{+wAFg8j4@v@5==ei(;G=UKbva$n zNBU9#^pMT}US{bJRrMim}o zp;WbqCunV<^FQ#1RB6dUfkyZu{UK63-}(Di%s1ZYOPz=2%jX*#ix!E2u^#n2zrC(W z`Zimx@xXBY5~*TpukqAEOg?t6n#9vIf`Xo3Dzqv*!!MB@+>rDD+GYa;xt>Sfymwt*2ODGAr8y$R&ccM35&*Nda`=kb%su0A&W&D;I6OGSJpb_QHDQqOF$_+ImH^ zHlg!p~`Bce_ z5;%V4T>W=( zhw$n{!#XMusd2W!kM1UtvMF9ZG zCXfiivOv(SuwEqs06u1rG5PCXSjnuI(^Vos^SOf5lvJx!;mJAJpSNMXDx+pC}j2w}akhvn? zNqYaW&HVUdt%gdl4Vf(f+Z3w$y)?(f)7sCMPu7b!`p&!aO^zp*^=o!3o=pEtj3p;u z^57^Or$Khhhd<)mZuvsETfw=XFy8BTeogRtl&$5+Wy*y9PwQ&r|0kByY6u53K+-^BRWKrw&kUsqUulRDK= z;P)UA`%1FvJ0Hia0@}AGPH2?5?0$%ZzTS8Oh#b?V0)8rO^n%E-a7q9~j^+13aiXac zXh4OiL4(a3k3r;EI2C|eAKJ7Bkz>u!tTe?&@5^giw`I{0{nQFNqQ8F~9ns%Mx1jX=pRq85f|ay=&eLA3$gP1*DD0`hBw#i*!nkp z!!g8fqnC!deo*1cIt%(KmW7{Vl-(DrA>88^4MPsNQ2hSr7tardvzf~qkCSyp8((=} z#(a*6dG$gJDwpyvUHnzqecDTBqMsSDM8PF~f9JpX-@l~#$EE+{n=W2bqa2xdBe{&7 zKx?xY$7OT`4y4hqiI$^m+SC{zMS({mO?H- zJIqua>q&x=9uXAZe7FUb)*GG$QwohY!?VxLDF-Vvr^L$YM8sFaaqUlK9Ui%Encfmi z$JZ8ni8%}LRmImXsFE7Bhm!Cpi#>BlYPlMlo1B9q$dVjcVw^zKuY@VD{I6l;eCt&v zE4~noi|C%P+Bt?Kot>Ja9F&!aDVOXIrw{>6Le3dT}@tN?$XZcpWe&l$eoM z3=uS_H@Z~b&R9!2_FPXG-od=Av9I(WU444-VRA4wcn1!B+RD%^dCd^<@7EZesFznS zuU-YI8?4{oS9c^O)Pv}~MxPEo79|DcRNxC*D>485ht#s*9Ql3sT&736s=;EUgrIut+m-gP?t2)a#zcgv2|20aS?%pqt)mxiEKNN5-_%#S-BpftE(Q0k3YZ50V z>>se6~o4Y(9fiHvsrb0%&>@m(e*x2IQ9}oP8kVN+`jn!UHondF1*GE;0`X?JI~(6Nd8@a47GKXw6oGO0P5^QaELPaEFqF9+-c%FqPKkBB!)ySYtd@ z6l|W-%LZ9!}hKSeqJwgl-=1yP%(bRfh%*8dDT8-DS z&9{3oe7@8AQ*D;M6y3v@#1mt}v{$@S5DC_sFh^;QEwF#=M`Z(~Q!4b%*Dq3}abI#K*ua;mM(v(oW!==RNO zB9vA^LRoMCK>NU4fbN3|tp)(@s|yaW^Yep4lS^;qKDaPbv=eS2cgY;?;cB%qJSJIF zZe=K32@tdIheLfPJ}SS5t<(30%^Y1n#r~^(x-Mx2k;Ho!CU*2vptB9g3q1*b7OP~>?G@&1!E3a2qW#TG zfjhYTeWwZdh?L(=Q`o5Ye~2{Hv)GQR6Xm;#^}7mmTra=+7r76v(f&S*f4aMinNWX3 zN_f){k$)@VLvRQ76n<8407wjUqCnGoB~n6IU9b%3N5qMoGyhg;hybDWdsvJvvo0wi z=tyLU0QHd`q=cO(T_}D{IbegpPLvgSyDRy**BID|cA;JhmNWrVb-C^>7(w4$a0NE@ zcd*L|7Ec$w=0n3RaL1O+%m=dbY<|L_uqL%WFv>rsp} zxFoyX>}=~&5C#?;Jprud&qlwd2HlSKfkS_{M;FQf?m#q}m_zIm&hN|Ix%SR~e2wjC zP{J;-0!k16Fp9$2lr(=nDN-Bnj~V=nh9n1fh1P4sGOoF9aN8S*O-S@94Se4F)LyK=#Lr@z936;SCfG7lX1#~WELC%5P z%+uE9;=gwbZ#a>+>4W##k+(sbghtSsG}6mrLKe7%$^Q@B0(*KecF%=Nxcwd`0LlyA z!BUKE3=tqbmKltlIRwPOUjx=Cs1knO+N>vNP8tdNasi|CJnVU^0r*)1;1PlkfFG%R zUjh^;M9mPPPioJ`HSzqu4Jje$X$L$y*kLMyQHMP_H~{(ISR$QP25FKt^;U*Vv?clm zhhCld7zHd*)&Faj$p2ST-Tm8lS*yHuJl+?y@A;0Z*Q_4V6$-t>H=HbinZT>Gugnlt& zxi}(iJ@849lfm_q&!|t}sLh7Z1Y`exbm+d}g8t_r!v*DY;(}&)p$L#W!6yEVC?fJ| ziq?fC52N6Y{SEuz4$;yT7?RtDi%=%!AKLPtb;pNE$;=xa>{s_ zTGPKu69H$hE96!6V4NF?cx;|75iGNRy_yh=&JmZ8iq4;#Q0-&yJLfCYrj{Jz4*644 ztmY3$BC$wa=~@{|_9O|WNRaRn^EDzQ+**|jx&U#O(k8gNpd88*aPx(?9~F+!7g$yxZC3p(-z@MnjqnrKNPE4|Axmd1_y z0$~DG5u034dXauDU4(QZF>xD8Y32hL)b?Y>4*#ZcMb*@jP^j_uiOPFGXIc||VF7oA z6eRgtP{AA%)y=4z(~w|nAlL}i=1a~|^zw9{V{}vAh~pjByz~VUeiuo{#OUxCC%D71 z0ry{v2P~q8VQFmx^CEu|D|q?cVfMR>@O!s-rX!NpX7~s=%G(I!Asp9{;=c*@N%vQ*P7YAU_IILX-`e^^v`XV( z$u~pt8M#KKT~&fRIzsHWq=&%jce4$+_Kya?^!TKpTde zj#w9yfu4{*j<=VQwst2*Hdm2~Wd2oL(7w3Wmx4PoQ%1r63p508AWP!?VWgJ4e60rN zudc$N`-8V&&>@`iCRDHrUNb5lUb9US8JBlCSf;Lgj0;-ME6xS=!eqnl9vMg^MB2L0 z*XbczJ(68Np@PBGgurqd^z;x5=5mWRlLMA^H9f8r1N{{?$Y7c9U?EK8ZB3U{f1nnm zIv@AJ*VeO<5bpdR_TD@m>c0CQFJ&oPQph%yqQy4K&P+u~DW$S!8%2a{S;r__MNLvD zTcuLj6S8kH$ri#`#w1&qv5gta81sD%mzMk1ecgZj{`mE|uj~DIyobxo>)o99d7b5X zp69%80omSIJ-J8gk!J9|GKNS;Jto-HH+k=pIDGQha4gt$I6sk}_aeg>Bw|ose>Mh~ z#*y;I2w%xrCEZDA*v$*C!C{9Md$h-tt11u(by2n<&}|1u)jOFsElRZSiquc5M)Yz! z#)LpG$@47P2pK!(AJUY=Zu?2Smu#;#*i5*XWS`%egV44!Q1O5|aZGd=$CVvb&y4eT zR$1#kxhN2kIUEk!2rnv%BHn;}0h;HN_3oHIFt@EYFbpj)v2qh}f4t5DdqN)==Bs+Pe?t}+ zb}i4zBM@;+BdR=lzuk~e>0@gBCiG1`!}~ zxCmT*6{`{lLQX#)I54{>3P59Dhgj;IjKO(=_+X9=A=lcWBM=cDa>XZ1+qTS#iS)s? zAq1+N6kaSV-V6UU3l;Be2(7Wwsp?+Ii|wx3p;L7Sp;LZbcT*!#Ry;|vbFL!#{^%cV zYnc#lJhQwx8KxH4%7#b5Y+>5ZpB%T;5zKbus*~v9S%(3qqhaZv`x#5nOq&-+Ehlzb{+Kq0*8E)1`&kM zQGe(b0(X^Wea=}?j0jO7x3h4NhZ8B3TNVBO0~XxF%;yrfzP$h+xH$&Qg6AI{dDS3v z%+j-Gy_wfCWa|ZF8y7qv5aF%CUl#q=o?#Ov{WexT`+OP1w==7NnpPcCtccc;`pklG zIYgEXtG<*abO&l=hKGPZ8ON*xc6Eaz8oEx(P{%@a3vpIfd~kmgf0gw-s|p;Py_}80 zsU~0;{pkVcMQUH@D}DRQ27zV1fc$>3muAT?0mB%W>C0xoL-7>^eRW z&|WDC)%y12lZNtc7d^efXQj~u$_T?zFCSMHgV_b%r66qCotg390U>QQ#_Jy1Qb+QP z6gYqvJ=^0VD-J^1rN}mH-ReiW(maosd{u~j+4nU|qlHmdI@Q9olW+Pj1`uAS_a6A} z=OW6uEEl8QrI>f=e9uD1k?)sup-ZyaQs>cIH@>PqZxsMYwND8|46nji>Fjyl32f~q zyBp9~251m_){k<4px6@VYPK>|yi(z*toUi>k#)8GjqzI$E>>b9z&yi0#aZaQZU_Yv z#6PYi(_Bon<_9bhThm>hXn=Z zU=GvH%Qgav8gd0>wf{&J1hv{gs_H9B6{u>SCree|yY_jYYpYlhIv<}4A$00xK5s;usHR#37K+_HBk9FzY`W@!^WNAuy&DG-**rV%z`h zgSK{D1aP^X>1)2HJ4}f3#VtRh`xi*Clyxb2pI7p}hu#Sp)P@B^Gj+1TL3GwU6I4?c zy@3G~Fs!Pq_*z?7o~HlOW)@Ck{%KX0`7#IahE#E;rPSeY>Z%`hltuMNcDrnffMGH! z%rgdGnZ-&WtUBw(HYSALrEhuy5l5urf}lnxE2B9SVuV4wUJ8-{yP-(%r0<|dz&pJL z5$(xnMvz6`TJ@}>!xzY2LuoByqd`Vwsi_bVXs?7~lSq|yA8S54h=567zXIF5qFw#h zNTBh8NfgMV|7g3qqbyod{}*4i2yH#nK5k>F!`BQIUsLx2ASbL!d{Z6QkFAzE`k4~VWueh#ARz1_p zm#VTp^duNWUu46u>TiT#gbtraE*Ok+%-+>X=OcFyFwAGmyqR3R-r4|vg*_Sq^po37 z0-Qq2|Mz(uPhiSWiEdcwY>yL)C z*sJ;k85t}P$_rhM4ZxFsVup%KEn+U-|Akq-cn%m3lbFp2Jzq90OP%ZM@9dD}*Ya@$ z!R+lR5P#7QOkan-QkRjl(D~?O_zRo`V9+TCVSnhlyO~K=I!ufdD-}RH7fjNDll-H% zKM1S3${05FWLWjoCARYD`-1tvOde)ru4(4*H3*lk%YI?n4*mg9@&2aUQ1L;2I{?M% zb5})&)j6tF^)2N8f8?yX%-19I_H=;`TItXGs`_TqEOZ#LYT)5KYe*xVB>Q5QxSvHY0RiuMrM~zPj%i3VnF$<+iG4X6nGesw@Vq!xsgB ze{(n)raik&7=Y7z40SD}(Ue*M8wd@7+5+v`D9GKAW;;rwQ$Viq6RHh=#iLGih+;wL z5u`*B8;$a%pVp8Xf%%S`aRlc4kB$PWuS1Q1j;^S#ksb{oS5u6EAoPU3Sb)IP4G~s7 z8)OVJrWT;Rh{cSx+jO(6cz^4~%IHmy^3wtlkFSfZtF3H|7Xp+TF?A~)JNTy}3mv_ag4!ara@Jj8DYKMbk?yRnzrmjzCKiDkZF`!S^a7nD-CdJJ7{qe!ob!cARb?9!+ z_hAANHaZ#{piK3tUsn8t@gsJG+^5Ulz=QZBpyCgj9H8R7>*e1^e@+I;>k%6Oxw_E3 z|7%S>yCQU@UbW*;Rs0R;O-V)p1{fB}PL)62TY>t;?11;W-$GZhe-B-eo4wc&dJYb- zFm2*C;p;zR+3sS=-IfplTCJiA5V#2%g4qPY5GG=Ejzqx{Xcde+>m3@5d>@&1yl&F> zZ6GpC$2TbhT~@$E-TEB^u$Hz~Qr;_gYX29%^ibOajs8uV&u%_D$-A10CEBf~uKIp_ z`7H)8TRM4-)VC%8`2z#kjxB|K#{e?8moR`bSSdKT+L*qtxr(a9zyLDP00W>fjtPJP zSU{GK0FmoR|9?4lTtjx5UPFTIe*}x!_hK6h<@DumE*a>U!&(_=U{EVyz@V~IU*30Q zr$z&VN=O6-l>!9@H3Qv0(l1L$Z0d;3KwAl&&OpDsPF_1OY1_a-eRve(GtRAHKvKxvL3prmjxvtteu;86A)k0N?|`d)I;_y zC+lyqY~p-}AK4B>`glLjrR}epHA`Vv3yc}xefjvkhk|AJeo>n(wSfHaP;3er+}}ME zAz;ZvWpIN7U6H-KBI9+@LlF{NG?!$?@K9LRzYdH=$g)&_yzaJuBrCS<%|L_ND+|>V z)Lu(rjM^)u5!7BSAfeP(KwBwOF-a0xQ_vms_*bea!^<)+in|Qy{&PLV%-^mBi#rt zzHL$g+f#J70%mo*?fFG7m~lDmhsK2pRdJisn_JSGT0B;kLR)l$K@|RZvn*w+x3J>r~^1#`H3jnWV2>~fT z<>2>}|AXm=D=zv#kfk&;{zm_&tDoOI%BvkG&P2)VY++j5gG)QH?6)cZAfOXWDk&f%A(SRO6Kmd9G zp*OJob_i0EPXkEUo>T_2h6B2==w}3DlJp~FJJyr`i zdP@j!^p+6d=mU|!(SzLy96iO^Rh0wWkZ1nLO`SKcBQ-atNXSNM`CJ4a=}^6fJUhCL znSgi<&)~lF`Hj8s`nM9D@q{HFfGCA$8|7pmQWM}&@lU{F}WVTmj>oR%FI%0qoQg!oW@mV$0ZRF!J+@B7UqE(d5Bu z%4t9DYsjOCk>`6)Jyvh0STAvbR$;aLv8tQFZufrr`7*E$GLGIsNMZbDEb9-#itDzD zY9q!bpY}Pgx#kwjeevxlcDO%c!(to_*uT35;39rYSgB@>j)EQ_{qP~t~l&GP=XgyWnAw}8(B8Gn* z3bb!*+b=r0nA~>>Qh3BDC$EEu3Fv4HP8Gm? zuQ|pWE`Cqt#99I(H<|hScUeOS_$^nZZ%qwreFQfL#qv8><(9=7>egkhN*Qd4tHQi! z4V6sUe_FMd!Br`P0j|oTq%nZ2@*_q9T$P_}?UEf2XQnu>p_~@Hp==3hPTIysIc@jt zdIp+LDsBzf$m(k-&LFwRYJue55(1KYO9)8rfg#oB4n~6HUWtJ4ay{dZWMC$g(*QFm zgMG(Lz=t|~t|31cpW9*q>0ilwa`_|I-Y7a_3Ay%M;#gg4272!63j-`>;!pSRqrda; zHEj+4NJjceIStZJu(#b1SPV!%%V8k>w1j~46GTi!(xtGEsdekAyI_Hd7LbF?S{tK7 z6V(+7i3-G`QkWh7HAe<|(ueJrh<>q9%32CzdfyF#veG8r=NIjWU8BZ20}ZN9 zYp8~W@jzt&0|n%S{$e1IY?88s00v3`5-?B#kqib3(9yYe7*N6-1+Yxh5e|Y_nuXN0 zJcSMr=O1}d#E!*$$Q}L)vZa-FeJ)7hZxlsXKmhsVSlx>ZbYta-s6Rc82N7gfu~An5 zBav6YVi=`7iZk`1*8`5fl21VV{m+p-!`Y`rE{FDe9Dw2YDf_hUDDX#y`6f$qQC}9X zwDp1Y48y9fqwtt8wm!In=eyk2Q3VSB=&ipIi<#tNDC)j)SUi;TUEiY4K;6AOWh^!b`Yx-8d-l0DG3Tqf9INd$!}IscL4?uArY`5 zt|Py*A^sQ3A%Z3%400maP|q zkc>KA2KsxQ4j`KpGYd$z(>WHb)~x#4U%=&F2DrS&0?~Hxf&tgd6B3Kx4Q-}4 z`x;n4ezZ!}260H(90s^Z*O)sGfS6A`y0Jg}^Cf^V7Mz#*fs$K5e%~quF@#--_qE92 z{?RJ6RtU@by;X{GaH&;lDOv9^{(05KRw+uO-S(wWlhG>mJ<&&GX#A7|Fwkaz_U`~y zj-880XdqGzA!ua*sSK6|sX-G132kZlFE;$B9YBRaK^aJGoA6rdjpc$eh&2e zyb)9YRHSZK<1f)r$-KJ8D z8(xUeYt+19HTC6wx7}E+#6|zk4{#vRxf6n9bnXxmLFWzu0Xlaw(4ccC1I>HUg9VGh zfov79^ME@C>^ut3GCL1MKh50$Sne}%cgAXwSK9EPnq>99TRQ`dWk4gKjP&j6i{t+X zib-Za{5#uqB!iekNIZPprVKV3znZG#r~n73QE3?{84Xosph@i6pce2Zc0w=9@6b?RuD@5%0e4V>b9B(hYE5htX8w04Pu0Hw zG#I~vJe5{ac(zhb1|b;~e0kuYhC^e_{`7i0BZX)FO$wi)|6c_4QvCnaJimweYY1ZN z2#9O|YW#aKUWJ|Fyiepm7vzDD_XRHgtZ@u4s1viXmcgE`Z{>}yNmSnlP$^y^_n}$X5 z&A&pREjPzNNOt9q&fz69&?bxi9q^Q341j(aV*-#JZkaOD1?rzGvcp;%20;9|$QXI9 zQ2sl3{=Z8(`4x-GVR!y)ZUd+pftd!Pzm(>FCX86^As{l^`+#X%eFtPl$8$lLy5}Fygm20J1&n@?uDpoR|CGanlyj8fkh(nBs7j+=3M;Wi00=6jzZ@_9haLYv z#TKdgwIKHsTO@e|BuM>F;h^%-;99n_JMuyS2ID_fk7ZssBZIg9#UXV9_-&CLW(Z^b zyMi2ooWER<11X?1m^fT%#o@;CJk zj5F%j)Ey1xm;IkiHIFh;4RHYT{L$%=`Ej}0QAzuoY6p(p;*;E!N^d9KVDl|10(TG6*QS0Lr7@z_LP>xYrU=b8Z<>dUad&Hw_;DL-{4} zKkEO2AOrL0m^KiMER6pff(;NWLSA(LDx9hpuYrdcq)^jbI zoib5)iOnDRSuh_YIp-L44*k%Z;7=D_L6L|>3GhK=a2qJl)Kh!07+dlIEN1s2N4Y>0 ze8wb(lX4o#rUh8X?D`v{lM~fJQ`6-RA3&@_CQE~!gOZS6Ynw}B39(vtv8v1z9x#^h z^JPG(11Ja^Rp8G?L4cO7%&BFkWO^_A_1}~^fGes)F7Nq&KxEL=zyOg!(R^hd*l5Dv z6gEXEnTCA-5JP@)M!>a$B++^0jGg@VkrM5nn$dC(65~}2gz+kPyV=KFp@E83@{qhL8PcqFp+`2u)3NKuNI8H^|JU2L zLEE9nifxC023AR229bZ?V{8`nkM;c3dbUXY0(d3^2n0~PL2rkdZU~ZNe~c*Qw8$4j z&}HOig2e#hx4o7b^_vEdl#U6t>yxq#m5x^B)|9bdJ5E7eFMe$BV)fiMy|;~pRf zQc^zxXmrI4>EGC&{})PeYbnlIprK<09s_7QG}Zabj5@ml$Nz6u6tr?l8njjXy&b)_ z(w_f6*~AIRu;iAQO3p=S^E0Tu;XIp#0C04O%8(UdGpgKb~8+4$Ny=XcfN7^wz5DA`v z^C#0kfr`#8@;|?;=t$cTW7Z9$8{YKfe~#`MMwHLszwk@{Q~bKF#hTnQouR8AjCfgW zk;B#fP3j3o-lU}icJtzRt78sB*r4)DlF3mEjV##n&wTp^Ww}bai)UD-&!jQe4qPkrQ}rv!>+T&h@S7Pz-kS+A z;6^J>*cC9(=f*7LA00=fsZRAojlt)8qDHiuW#Bab6!ILmCMFq^Om8@&i*`6mhZlNpl%Nk+ za}y(=o)6(QS(SaPk?}Kk9YrF{qnL}T`r6E-Rzqh+Psw~+{lGTlM%In`?JA)&&G1mq zBQJ<(pWQFsOFPEbpS#jDnuWNQ{+=n6nU7tP&roul9nG9GJ~N?ndFH)Pj4!=-kMi?Q zoKj~(`x6vt_8aq6?$)G|Ff)Gm$O8|TtTmX8Cr6yf0Z4%}RMk3P(c#JWx}ypLYBrK_ ziMGf)R$df?*3o9@Ys9G_y-iW*a-@$I;R=vtQsiVwSOdd!|qep6JlaS((s5 zB`=__%6y@5;|AgLp}2S)(J+5)e5wM! z(|300`DDwr)#P>$d*oa@74P7OnQD(Ie={<1`D1$PWM54>B)IrOr-Nk37?$Pwga>!$ zs>F(#=`(c=AqxxD+xyz_b7$s^N(?AdE7GQ-C4q@d(0U*Jd#dq8`+7` zpCC3=IilWhr3#;nou7e>zKIvidDF~UkkGCx^A_jRi$N9oOl5mHiQJ5W_+5h)6;IdQ zU+`Al720|aarQLQJ1>%6d6Kgz9^29UV4(y%f6t9nFd)Nq>q^PJk^(PsT?O8$glg{S zcY}^ojKT9bp&k^P+~+nHWwp2X@)|8ukklqZZ|jtC+0FD7d&1Kt4szCeZm{4SqWWpH z7PMRUQ8^|fyTyog`c1#HMTHAtbo5Z%Gb@VOiG#`rTfZVfWL8oI1NzxG}bE`aP0;)`YMg}4bj2T z8tXw%qQ}uEpruAw&rmuEq6b>!Y1@JTKU7o?3}y5=Y6;N2kWHXRo_jYSh|X*aYH1;l zZwmqtim2W$Fh87YH<&6mhLQqvZbLS`ZZ7s~Eu1qqLsEy64d{~vxu`ro{Sp+thr3gz zyoyNwTt`cCjGr%PDDLQ@i)UGfY?+NYSeEA}pZcILsuLf8nx?em7N8-1-3#-yh~)U$ z+c47O$^>;Ux5#>f%e_yy;av&HlJ?VcBwWK(LxT^uyQkq3p8Ho_c_9kd9zo*Ep5r1M zk`7&3eKkCEEv6*;u4>r?F`|?SUuEt~^V_>;JN~_^NcOG8jtQ8Zd)CZu(QLtY$)6JS z7yC@Z4Mc9Oo*dS*_`uO$vO32a)D@YQ?s!8IJJ7rUmkDxe5Vn0Y<4 zces}GiBen5tqQ-E5Z!$g=S_Go6sa&FQyDEPBdmUP3fqX#LW`*T^=P4$7ayGVZ=;d< zwVZtNzqVLjn3Uj#l+2H}h^0DD@0tHfR2(bz&Q&f|m`Tq$fh&%0yXZT;px8OerG8r_ zEVKprUL#G9QV}T1FXdDF_~yy^YNfrxWs8%-TIA##Z@l=Z7{PRMc~+SDvD)-eiCbPw zQ_LTBGP%K4d)M>Zp;yby6CFtvJU%nCh9j8XvsBDDf{dbYbDO6@PC#-Bm=rYTEt{+6 zET_oSY5FMDDc64_9F=cB!?sJ^wZcSxIwTiA+VlWL^$Sffi~UTe)p-#ieqY+~{vo+2 zPjXBM9`5U@!%7?O3`sAU8|bk~PLMJyqPd*uBPEt}adsfxg)qJSbV9)iKU{ttId?3f zh&JhjB4xCzWsOdfbWvH<^YtT*_Q*_SAM%XPV>F!FhM(`D6{P#oTLuc;W=QTeTJG__ zcJMaE&_-hvnb>Ad6r7*QLMH1jjK8aI*7Y^Mc$>fDHr;HMpJ0y+9!15F_m|M;zd7Yl zPmdleaIcb~O+&i}V+_S7*x-lXh>UISi;I*&-vpFUUArq7fpUPhOE&=VJ6;&KDio7znYua zGlxk{vyX2a*k@|8$cTt? z-=ce~$UDsLJpGxI=I22Ty2Z4LV})^aQ;)HS$T#+WE+I?TuPR-89v!*zX!1&FJF!g$fKg zw`T+{>h9_zLh*alR43Phl|<|BPsNL&$BL#Qev~MPXt%@38g&BO@tB0MI`l-riHlQ% z@VPcBv8g81J$I)jXRdqUQFc3fb##KD(CCFcHhy!ecL9DiM^2_8%+<2x#clD|-(Chd z;r(XbE!>>B#x!TCXzq)}mYNsQe8=&GBi~-rJ}!J-$a$UA)s=a@p}7;+xbN}p0@=c* z+4f#kT8Z0875A5f9`^rt#Mt z)PII0fgV;ZFz>@1$~qZT24nd_FR?3Rhp#U{%X;Y_Jr|MD|Bp94pL885>6jkH z{{+c#=l$ikXq!5XwZz1xPYN&+E;+;iH9784f{X3#HVQ#?IkeBt1k_25u+XhNx_!>f zOh86eXW!Y+m(U66qQz9gU}wT;g*GX7tef_=Q#YrtK~ZsnL_Ux7^_))_E1r92)Logg z(9lNDbL>ryOD9irmrw~66$5Lr1>{GQP%*cNiP?$d?9c6CbG>brSx@I@N1e=(v<$wm zm@nuA$f%zy1PwRFJj@swaJqL|pYc4w3;o`57cPL7k^2uo%gD17&@%EY1+@(Iw!Bwixi>VqvtV1t$Nb#3b+&u675u(1(PHWmZb%w4}k)XVj(WmFWxf4e1JW{MSos%r6I#Z9=3HAaE+) z(M-yW=skmPxU`*RKQ9=9uz;N8&uTC-_CFNSzsIV%v24q_z8h}`0{0L4 z?;rFHbWw{xG0L{peeFHv7vW0VtA+dpW7+G2+!Y3|yO!mBF})(K#2*`Kqsq_OY_ZR} z$P8AUoishr8+&k%;Y-FbrSkOE^|TkEH`y$hjI{OdJ+SV7ZvFfUO2$!dSHPxQY|{-J zYYeF8CNK2P2n`b85(aQNEx4p&iRDQ@s_A^I@(iczn8`qwL``-BuOaH~XD+ zgSEGuHZak{+@{ZF61PlZNkOSeF41X}(7gwT;6ab4e0P6)C|1uq5M^V;oJwh6e$~sX zhZ)r6Nl@SH8+m_hi&&ve?O;6AmwLUrBkD$7ycDm`ozjslO(`;b=aAtX!=Zu4&9}?X zS%rVf>QhhHGT`f)?I-+vy{jLxps@HrBx(FW?SuY#z`6V2k|uv&ttQW5WS@;PS{`*x za?t&Fn}Ms1GX7+(i>RZ5M+WyA62OVqRIaH*(+oep8}DF%Y4U zvr)a6B3u_Nbh9PJsNR{`eznho*CcRL1c!jQ!4rbt#J17S*Q_8|?KiP|iw@f;WBz)& z0ub!OnUh(utp9%(?Ce6_r2A{h!R$ltijPKuPwvCj1lc>FRp`8GMlvR*8r`*5@?S#)Edayqque?ZdV z(?g_|C4v5yPFiXLyBDZz;2p~4dPi!h32Y0v=tNwwGI#d_S)1=OSuxtZ95&;c+iz-a zyxB*{&l<5wI1g5sRh}=;M4}lfbW^(wuL&;u7LXlY=*je ztrzH?1tML2htoCfzN659+LKcivV-1aqw-iS2`?bsN;{?6yr#}r%X-C1!?zz~2VGjW zRK$j!&zi2O+C4T^E$C9=C_ORn zj!tQfXxF0LPqKsKO*>yHD?sYXV=)rN7}>$5^Xpv2zdsQqc7Od97Tq29j_wFQTA!v` z;74h9XUKHvTT9kH{L8+pKu#|j1%|bse-_97%13WHP}yY3x+_0@_4I0>a>N7coj|_p zUB!crK9STrx-76D<+kGC+;tVPBb?8b)tTc74@e3;t)kK@^*- z=w6&;trvLavSq!*Su~d`%;8>dMQr-0;~gLc@0i`SUe9hnmK~gkN!V7K*R6RV+SRtq zxV*c1pRnLSp+jH(i0ojd&(RG7YS;u>n@a)p1l9GVjnk;KD87V9e>i-eGB8-sQu(50 zOrhl6?CgR{P`W0)U@JW3lr`$_?t?#w zQc`xkyN?zN<((Cq)apZLwbx%vKq{CRW@cDfR+iri+RVOpVAGZLO3blLCs!x=pDEq_ z1^oK#owhSC*JVo!aBRqy-B5MBD%{yxc#A|>)YMk>L(fCTO?q<6or3V|OHz?7jF-)R zd*>;yg0|07Bwkz(YK_N+f9mjkl3nRX&$xZxJG-H7?%B6^-^Li!13y!@h|Z~@7}8Y3 zRcbhf1v&0r(DH49oMw>NgS0Wb0u{7S_AHBAJ4*|hMj6&%dPmaCAjy>g;vn@;LtvL{ zQ)OVZ2J;fy)rbou;&hA*evTDM(@LO^J9#(_UqU(x3fql&PqBNq_Uk9EzW4m|$GT?9 zP=tqsX+x&qowQspZ#qE+re-$EDu<#+QIkHmGz!a`rSZ$;3YT;dGarrzoTH?}d_Ad{ zeNouywj>#q)Qo*88OiW2xSk{xGBSwrf*odWD~2Z*G_zJtW2PkNA^-adBBk zA(Bwvo}0-xNRfLyrfqDv@x?}Tv`%|PXv-uSxARR1tCm#`p$EjTnv^TgpAgzBPM9R9 z`gr2z&%Yt`fYHAZ>b}T*@;;s*T5PWXkDqv`ZYqV7^YH{jt=cOPEjAxSVV3uLvqJbi z+BDiLM!H9Nt-0GeZq$g1=FNJ&3E6w%y)`#xa|-k4IJJt#_KI95eS;z!ZiBIH2Pxwg zs5c=&WaaB)&u$ablIBm2X2EBNaTnKRj{4D>sU%&9ak?VPQHF4-V$)pr@JF^hsg_*q5FG3RVBgHh^f7pbemV-z+knznPTQ6`8H)RgSk9i&%N7p&{(XfPlX}* zG*W(veO~=nj>DWv{MMnVQaSvc@GBpEc58!wMD91!L2Q%zX~TGQWL~`(FaA;*>C5?Q zckw{BZHK-cF6>#i?cs5`C~N8G$}Tdl)!{yi-&2M0EhXC?F3Qub$a7#(sDH_LYpZTb zf~n2%_29TAd3=3dJ&@{AAY7NYn|x1qzOoGmA2mwLA_(QxXQ$`?B{~(jym_BW$&QYhHaZycq5hhj5J>Yx}t8TpEdpYr*ZbieqK9$}t?YIiaDM z!jNg^qD))8aK2LB-!^8}-!@i}Xq_e7*`<)cGgT0AS}aO(t$D`z7g9)|%xo2hdEKyK z#J7A02BRV~#)@Fbm4BqrvG?MFA&5uYt>S=AzgGb|y>o`4)0vC@K84}$->alkeWY5A z9zA)s8greHkzGNt>SR6XCA0IUd)gGA$cV5>zVv$V)Ec=~FOaj`b{8$&n^_;YVVfpf z(G5klZ981F`|f>szF%VWu(YzXOsi2!mZ42%y;WSL%A&>wr|~!ZqPEZGw8^|9m$fay z5q?2?TkFGBJ65ebz;r5QU*n;-J2p!(J{s!IhZJiC8p}T-xwzyY&{)Gkps|%IKx3D$ z0Nyro*&*J~LAtdaSP`uhSKAbl6?wp0`AiCFa;~K%`GR`0mlqOwO=qy@boAclSufWO zcZUiuy=>MQ%t>vC9a3wZXO@dI$#y&Wf>dW^^@0SbJNx1k)y;P`=b7bOz979llqwge zm5i}bNsz0acvx@Hmb>O*J-Pd0jaym{Pvnr=RZ^CfAcJH4h}D#Ya8*vB&emR&d>FZR=$}T*rGB8~-LmT!mP~;x-%YA2Z z-btF=S#rJv&u!3QZjl9daE%&McuJ(@#weT0n2WZuN2b$fhO_9GNYeDPQ>-%NhJ|q& zW(-EfdFvD-r#&n2>hpf2wR0IJ0>b_BX$e*KLm6f+V>`<7vZxc#L)Im;o^8!=`tS%D zUC)mySjde@|7Kv0Dsq_a$;!pgJEuNwW&h|Ng&zLm6wLR8>f=*LiAs>u5`|NSi5R#a zsXw{S#D)aF3Kv9|OmuRU<;=j(pU0b*_))3kdxL%JsT7Z~42kqRIC(rSJ;`-qH1PNW zv7$43BZ{1arjy$s3S9N0f{LLYH8KXF1-#Oe6l(T$bJXgqrv>eI(if;>3S)(26fy0p zkB3i|FVfwoyaiTFD+uwR9-ObEl$2m^M4HoRo!nH_LgaLRMJFD&FnWK)VRLz>Q_0*! zDQ$?F-sVB`Y(F1|Yca>mpy(8wmDfTMeK=+sKR>}eRzjaih5(czzs)IXOur^1H_3Dw zn%divWPYA@l{7`28>)14G?y_0H7mKAf>2~Oy`?jmxRX*b(P!X7ck}WnavWbEx1$^C zdM}ApFU<9fklBenGHq}oDqsJ(Iox-K?0AkG+TfRMCg7+~>qNcryEWgLUFfxcXDi)@ zwzG47a&iJWs|ZmXyDo#8ZBZN(UFd1S`%Q7&H91W|}ZWrtmZ8BHpk2exp@#nAJ2GlnXs|b zoa5{??e=tmPzSlsufS{rY#u#^r%hnob6lrlLdJ^e<8_pjx^<8aA~czZYTuu0Z(A~Q zfiCAW-z>4&164e0=Qy7eaxMPk!Z(VdcJ_Ip-ozYgUYF=~Gx{pp;~7Wvm-J$Q}+v(27imfevK#nc+^N;w&Zz249FONWc%b_D9$e z=~l>nBmIcXrlB>yzCj*i(HpiDBr$$kIG{@Yo)lXiQuxR{$V~M;_U@^hy$~#goF*Ug#!T`kBMJ)%*`|eG1_!IvU9rWpxa@E70o|RbF4U z{Ad$JIl3|Z^(EOGP0V*NSwn;u-v-vX%Ti=6@g1l*@b=>CG_iRWCY!pQ&2HIx8*KM} z4C=QlPkG0jSZ;N;TDix(?pDgYxmIsMiuj!ysARXG+qg5RJman#irsT2vu`s;3wUOA zZ00HloDzFk>a6`V{b9`9UKuTew&Yyxr2FtF)76(eDWmz(;>{D)7uwlJ+AurV zE1$b>J>gk#swj2Wy;+I&Lv-K$NEL0TB-_(UUM7VlhKg!&#YQJjDyF@Z&v_67{+}is!=_%o)dygRYwd9!^ zogCbb=U#CZwMS3A_S31}Qd!O$Od*M%4p6fSAP{TItlb0WU%zggJL?rINJ*lTb5Rt2 zun{5jDFc+A`FOMWd_=;+fO)Q5JCxJmT<~F2X~E6g`<@<@7F_w{5aE3{lqJu0@uV?i z^x<%T>Hfb?s>NX08U&tbI>8t+#IF=X7cOaS}C@7WBB+ z6yEo=oiFp?o%g2u^Q+7Ho;Gef^t-Dcl^BC zO<(*c#;tMra9F6-^MG{60T!m8ufCO^XxaaCLSnbbVd+Ocj_=;Hr= zvGOUWTK>bjfLK|^DdWkMWMAOHlLCL8M9c>`7(ZewV%vQb{TXi>5x%Q&5}Q%A#-*G^ zZo^$(7G=vHC+^)6DJK};KJfJVG_N?<@~2yj?_(amG`5rsyvxtxWx4Vx=S0RqGl9OK z#S`aqn{6^2ljU2NPK22^Hj6)s4%BuRtY*B)aL`|PvOHK`^e(@`-E01ZvLDz3zMp&y zy)5Uok7^D23 z;0F>fIoV^`74q_hwMergw$8T|lB&9i00dOEICrnEy`+r)7%}~H8lKlGt_CicbLz(AaT#PK@5JYnC>Y^?Tcw_ZKu_z zY+O`TN21$w%eJee#;~|cx%RNbCMS;wSSS~HS@!rAz;F1?^Q1DhC5}C9KZ-J&C#~iD&^hFyKeb?B zG@t+By~%x4q3`XGKJUCz%so3XYmdOEU1!_e-Sr!#98XV+C2xw!ayeo%wD)s!=U`EB zzRXPRa}!GBEy8 zn@qfIalcZ>P%{Z%m~Wo@O|jF1&MD{pK+5lo+Ldp+lkeJ36kSYgsjbSpM^ODFniFT{ zIXMNWn!Vqc3tf7T@TI;K4c1Mv-CdC7rmILqk8qEf;##Fl2m-#a!^!>M*DD-UXL5B=WSU_c;kQu12{*W@4(ML!QiVJ1lg2sM;*+m_N+UZtC2qcO zdag+($)F)?!U0N)hoc+?f-fiy8gD-HrM}(s+T>2ADXV+B+36A=jw`40SLg@0l^!vz z6P|k^Q(=K|fKVse5(TFB--3tZVMnH06YkT~<~pEZuEd(BG0Dg4cjJBC=@dv2$Lq0N zk*ja}w!+8tAwwm`n(3HECS@1J{s4dd9{ERCf-d%|I0Sa0&S1C(FND20VhAglW0H8G zdH855s^G>{=kUnLEM?ZMH%$sch>RzM-rjsRMe%t1o$)h}C-i!&X$m_u;ldXWw*tx>$FE{*hb-1>!|z zb6eza7pE=bL^#$J=&Hu3=L0j*ngzKP)rlQ|+Wu z&pT~bu4)NC>%q*p@dID0M`zzpp6I;6nK0;=N_q~PP_Ouyc;Dt!M_&Tc>VlC~r{jB9 z{EMz4-ODn^Cij0~s*bxfd(*}Q5wYhWc;#lzxz1 zZ1Ns)Lwablwo2Pc6nVrT`DFQVxba1|HW!m%cJlaR)=cZ}`0m5K7erX3x4*sm_ypZ9 zpw8s{s|(4;8}At3^W0sXkB8&m=_<;#S4q7I$0jb^@|=9`d|Ok9why`1aD6mPS-)Mn zgj)xa$$wT3iNhS&*sQhYvskkPliuDJGD`kKovf<9FVHPz_a4IXFO}(-`)F)`2z%i! zuVdc4wZ>*nSg=_uXRAa7~wvM@gietQZ zwb5`;&qG8(y%Aw;^}~MSt6#9Eg{u}CWsxb3B9hHECYeHO#knt3)=kak*jqNO>cE?=;!o=VZMV{-8@0*6_caa>nd#Yh`#*#M)5f?Ig zbJ8CX5M0#oyU5xkyH(Z+uVM)`YBm3lmv@ZLtL@rGW2;G{#!kb=wi?^EoyJ$(u(561 zR%11`?X+>@Z{>dP=h^SrV~_Fu+rM(HGbiVo=bXpXso*yYEguHkeR`s2hVp3XT532amI{radV0xsDys&M zmMN?5Z4fSt4i`0$%O1*k^p-#kM|aW0?J26rhJfh%0a;XquD)_2oqkXNsdhEDRAp$?!D&;qW9V>jqDH>1$5g@@AJT5IH zDu5yb=`v4P0%K%uHT#B7^MA&O-HtFX)tsYJR7Z22NeJIEt$cwii}sUeoiq}+h zKL~boI3Q2*z|!<^PbyM7Sq{sTu=A!YGQP_>A4Ht7Ou9*wndXB zUV-Jg_6nJH#Ok$%VKpZTZ4QxWeHe>`Go*Ftxemf-XhAs-+HtdIV93V0*xh->;>ug* zO^poiOF7t#zLn2^pnmu$@aBGFd;@8BWgCRe$*SI1Jz>xK(Z=^>=h{tP!0QnP73(pS z$gln-W$Vy}onTj~{4~(0Tz;z3_i@(udN%uQQ{d&+_vtwMZ7BP7C;Rzg^X)c*%J=PG zgJ9qPXZO?CTPv^UUmda!65cpvJuNUbD4EUYuQ%1N6PrN4eD2|vLas}YUGtH%eevY2 z^xl&$iTZ<4ZA#?Me!#}@H@COD>{rI_C&ssz=C^&{x8vxyb@AeE_p2u}TKpF|e*J|# zXKv#o)`yi;jLk#22!2!;=7)eTDt&6}tJX{=mo)G5@vz^{&0^W*zqTmt0?5S#=U)+n|frzEbmcHYCgfXC9zi<5#x_V!F zpmP3X0+w{OEI%;)doTXL1)al)0cqzBRK}(H#ETfCGjJPhd79JTe=_U~xH)=OvZ%G1I%9 zFs36i8!s>=GTTyaU{D^m=G5kv?crnRUIApxU7WK$)xjXK*{*q-a_!|TcnN4^q(9f> zYFVt#DLM-l)2{(r_X&@Q5k}~Ve=H*ol#L*GuB}EH#NsE_{&uw@gMC{Dt>FaOzPLDtH~Aod z4MZ^_N_5A|>$(zgz!>5QtY_qbvLOV|t^ZjjyUpzx=zabK^u7ZDy_Z2Y#8O4s$_cWk z)4vNL6z-FN!{uaVo63#+l84S&`fa*>;^vuEnb& z*w<^G`+Fnc^)|h~UTpzPKcnvWcc!44`2GJnarlcI7BDd*XR~KwqXAerbmbGzI~DQX zSAM7BrI!yDK*j9Q`{y-csPktTFR3OU?g0OB0aYI=OuwJ^&mA~Wwl8$fKr;>4fDaX7 z$nywx#_F%u$}h`x$Y7Qk$?Ld*p_Sde8PAp3(1H|)^M3!c6Blk{wAxFKl=$x7^1HcvT9^0kPSX=*{=Cr;l#ZeeLLmTVSQR6AzGVR>zzTdvt*_}+e)em?#EyIX{dYGOYa>>_x8hVY^A(^4N7*p zmmb-=_HUqe!Kbs9b6Vb(LXV{oUkB-H<@w*e^s=k51%cYnJ&ts<;lChwzE0xv)K401 z3iTSEahhEW<>GNmH~@W*Q0}&{W~G!^etG;7KHzT|h>D+cb;`ns1@h(H#nH&4dYxxj zhI;AsZ1TXbSrlQLIpy{=6l1<}7jT8kvNZGHD@*``q@2gTg7k-b>E$xa6e)qTO@7m% zVuLeL%U934+QK5_jYF~fu>YON#~}jEDCc1dYtsmSZRb;Pb^F1^2z|#c+2LN&&o)bb z-oX#erFmI&+E}|^nPzy_CHg6{FXBy;j_-~01@Aw23X!b4_23NWK9%@A=061qT8Z3i znz^+_gSq~3A*v7Dp8+Aw8Xb3`1Vhb$Y)++)x(0=k19hy8op=qc$J*L-70oxFT!83%KJ&^LFv&Qb#}oS)amSpthwbzHLTO>^*hRJhkspt4pxPn4#=wZkomSPk8 z#a&rlHWkh8TVwYhqx#~*hUD)H)zXTXP(O$kKjF{bo%N4Eo8CX@#d!XVd$QTQosEIj zhOL`)hGh98T-DIZZj!xQ)EXb0i&i&z_jCA5B-S_y_A>V0(nB$y)A@SXI@ILSldv=E zFO@N8`J^8t?le&%&R9U}^$?j}Tb%3{3BMRax1Mg?wl(V^1(%T!}@ zv!_Gi{%2%20m5~^{g`4z?i9gqCGOz;3#3M+!Fb&3qL+J}M)-p*YfbcFMIc7_o4!$) z=0!@N7Yr}J3ox??$NV(thA!F09&~M! zcP@+#VVAArQ^uTk}+dMr5)2LXk@SCc)kbBj8r%n z=C=fuDN}HTZ%!hJNTeqmfOypJN`)5OA3;XuOpxjNv-YJ`u3AgJt4#uqKyjj3;9)oW z^+dkR?r-ti>gLuU2=Ice6sW;?h^&5_C=LGoQWBu3S&DRLur`5MVjJ{9mzU@pn z`xNe9`4>hJeV-U#AAY~C10_1yued*7v!}A(F5X`5pAFhEGwqQVmcgIyeXqM;*Wa#_ zyI;(GpJs{P@MR$mUTvCI?E>3hrY2lZ&$-*kG~j%&Wz1`KgVj9ICbJ?pQErHX z4^ApWeZl+KZ9U;CJn>aa`O3xOmPYYv+~W2`^NQT^wk?FsRU?5iD;3 zGJhxL@s~$7s==*9H*H!1XU9YpB^9}CeWfJ4^oosjX9#2&80TS>@V*cp*i7E#OQRol zATdoGfMps0(9(fj^RByHJE6j4$N}&mN)CVr+YtUEg!qb2{x>`?M-O*DQ{QQy@)ZCi zGUS+k!nG0@{{WiiwWQx*-gcgS`;LB zr={m^%iP{@S{VKnt>yi($(#gQEV1b3;?{TaJ3S3%Vx<}dU5{(g+@+ia%z00u+=Q;svLD;-%0?&yF+Z!Mb4Kqnq zzS&a-b3s%^(Fi<#2c|P8J~6JM{Qt9gv2uQBKjA_}jCV{#Q!7D>2Arvgk3xlET822Rme~}TCAo<&>$6dWcNt(AeQb~VhHg;f6#zM~Q|xJK6Bdwp@aQyvd$OS{#+&Y>Fn2xfi8! zfeyo_x%pbDek#RTZQx+!j9#@I=2l2yyPcV;IXwB6`A~56nJRTQ*LE~|Jaw9VU*dq= zGCfIbi1e0XQEyIih~!rGw;q`A5Xt=8rgR`c`7;D&s`pEo7Zbxp@u)ki>bd(7>h}jf zy;~d?u#=hS7N$@`($oVLdOmLmx(DkTVO162;*~7e;2{|Sgym9QMall#P(4z7M1Vx# z$NI@T`qSPZad4PPnsTq`4EW8K&t3V?#&KtssV*P(Pv$G?`^TwIAz4^MKLkcDHe`!; zA2yEHsq9C|lw%*Hy;&~+pFBu2!%6GiC7&#dg-4ZNRlPW4T0~!z*6LAW=OJ9?YGtLU zm6h{YYi41|{_D@A^YhpQE5ZJJYV~zAwXLTc-&o$wxa%TvxXVqZ1#emoQBl1N;3cHA zWR+gTcsMuGB7D`B{Z`3u-Iy3#q^y;lLzp7_o8y-SNR23H+)JDWLwIaR%sNI5n2B@v%6*9hR;+1%id7_CJa|U7W6EW)VDz@q|%p9Y} zpL|>tOFC(*nzB(MB9mtI-0~l6IXuRuABzpUAf0e>5o!MOFeabX^#Vli-9cF12R?TT z?uvw+&yNEb6V3P%JRr~4boKjFtQWJVi*6zD>be2@a0!O=>R;cYezW0K3b6CzC4*ph zFq$_J<+FSq_s#J;{}gd&wOWYX@_KV;GBof=-@DAdw!HrNHE+AVa$SIm7dTn`DQ!Q$ zU8X%#*0}@aSN*_{7GdPjk{Le5W}>tT+xq|ZoI4afB2}W<*Jn{MPfQi6mK8 zTJrl9-muYLQ9l`p_SDmr`eUa!s}1%8uS(7}zUVlcU+{P35gggZHN(i$_6pfsZbr90 z*JXcS=-Ksbm@E|Z*L}l#CL6Dm&S4v{51`S5&ZZaL760-t+Fy|IGTDuVT~3fSKvHbx zCdx1BMb}$ornj2;W`&al?k&#~+NRVL?-pJ)0DaYg&L6T7D?hPh?9Cm!XQ9nJItJ1q$C@z}ATcahb7?h>Z@>G%KTMAsjijg;0AJ+Nd<>}wy z%KGDI<1zkfQ&pcQ*s%(v>Eirtglj*&`eO4nKUwJZrKv9}34afMuw=Q;S&r zqR1OAJt?q%-#A)zycqhqICG zP2M%yk9CafY6||ZbcmZeZzK`7RQt`FW+P6)ba|l&Y=mNhWIs;Ir`>-fsoxaKL{Q#a z5Iy^Z*{N4uidFxLxTUV{0|V);7q_@6RUvxbvhk&D%A*rh6Z{P+b7Y)iQ{TT(`SjLb z$2`e4zGob{DvaE%6~?aS_n0M@c2H~WymtNRVf$#>3y4}_KH?w?dSI}y)z860Mx~36 z4X~y8%|nz%7pu?iLsaV?WuMqp*^=iTI;`0cuA5q}huM$%GF~n?Uy875H+~tZ2rBo# zc1n%5lW2dr^X3+}Ww_8vEv@zJGKJCA@?lDqyRa{k#`m-L*4yNWn&FlA&U&JB2Q6m5 zrkFJUMfv?_muDl5!z^Y%GVOA+!hPoQ<>m_On_EYTK=vgXENG>u18gN zaayOlPqKH1!;LuR_3DY%-bK0v&@Y!F9`H`PRa2CWLNqz)$%wCu&K)Tf(M*n4`97U3 zxNbdxlCg~8zaj=16_5T<;>qW`?2lIp(CE_j)TLsovqbn;F&X56Dukf&u2QIJF zCEcMWpUS(cXrSVGqOx6a#U+B2R5S1O>)7km{nG&$k}B;+j+mMEB9v*kz3K7hYt5AJ zZQl-j+H2%dd38cWm|nH1`+TPCVYBA3C&&>mH}hcqrrqYs=r-i@W@h{)TqDf-gH;fG z$c|6)fVn+8zt${dcZgAoMUqbUfbU4v#bl!e?`sJ{jWH|R!3yi*pR*}K0&a%r1`{p` z>5W(YhFL~RcfzWJLy6lCkSZ_UXKO<2HKFe~?NIr+TGgWjfyk-ml)OKu5D?Rs{=DVd zx^-k2Z+JfSuKP}PXOLTWXbmjHX1R{u!=Dye-^<-k8otbN%+(Ruf2iYnba3QLXQ-}Xa~a^Ix33|}c+FxL;`>qc zOHDVR>G#2cH$SLdrt0#Kz{pizaZ!BaAhG(^6U9mUv(G#hKe``do_N%Q1^&Pik?6UY zJhc_r%5d#{ji8+IvfE<*UYoFgCfijUX-$eYi90;yE1Y(^Y>|Mu1!agkRAFHMsTQm5lCVrwH_rZN8LXLOD@ zg?kbia~v5O(!`ZHZo&OMr4dEBnH0nrt})eAt((t=673k3lRFP58#+O8-iPYrS`?-^ zFC}+Ls`-uPB!- zr9{otr7#2KEZaNsP!YE%0g*$IJA5H!X!9_-SvPjb)R%ALf}*pfmxF-Y5;4{fg$7DV z?7F#ybNTv!>&iD2L!x`*ue5VE8F93mA8(caoNhPF6%M#Z2lO5j!B;-f0jr<`va5hU zN)cXnb{{QOVHY6dC8!g=u0}z0-A7Dl+avYX??iE$XyQ$NDg%#c=hus>+3@a~KixDy z)RuK`SiiM6Fcql46SiAvrp}rl`mi#o|HILSNqqI3bk$H5xChK5cp%=2-vT*v~X46KAm$|X& zUxf^t3Yl2~KF(en8l^dbhGS|=8AuQ=Dxkk%#39)odMTY^qPW}g!|oCzgh?d=0m7#p zKfe*o*LBnpw7eK)dk4vpiPdhv(~>n+It^hvLs)*QfnIBuh9|+{_$jkscCv2g8e=!X zMU#uqRvn_OO_aFpBQ*DZz2f|0>tc1?Es z4QS&!J|y5R!3NMkY(@%4;i-N}-+-x5aMIDTCDG20q{~j^!hoK;8lo)mVtV{Eu%Rzy zE><*M=E1reWjb8bnK6a55?sBIW0^im|B0|#%xUx!Teo<(Q0~*`m&w8xqp#&I1w)7N zC3UJn+K#M~gudxM%|3~tlv20+--2I16a21oIuujl3d|n?RO(rRqnK&S(mCaa=>wXj za^xhAGJCxjHHJ@F?OtRjQw7WG5XnNbvh3m#-&&C#8L>xP$V)C_A{rUspm#XM zwMM3@?hUK3BuUK?CmSTfcfBQs!b2x4LK!uVLMP+PgoFZGCm|v3>GC^%Caal6SZNMt#$s6b~ za^!T^QFWSTYMitO^Y9{8ub|<~qDAKrEL|Ro4U$qhgIK+kQVpczij+o?(5OB zU!>)+e9`gI;vY-d;j!&1OA}A8lDECBXb2adnhmr9o0k7^?1H1m8?+XBF37%9RS)T< z(hng}T*3GOJ-4u-4EaI0g5;Z2ch{(WEI+d@d;#T=_9Y$BRY)=exksN9*QOLEPmtIu ziK~kLUF*IOADs~+b$Q6QDV*VwkO8ncbv`+aABo)*Md#=xQ~LM&^xBqdboEFm>EXf=D<$`IhwtrCi; z<=dqvorG9F4@LOsO6b6^z=jw6Y>*8On3}D$Vl4}TCv{OHTEdVD2(cj3&pb7pWb64j zAKgPMfZ=~6v`{0KXi7q$^$^|Zw;KHxof`DUVhhWFsnlq52(jk+0z5U)oi&77;YVdl zLR3lpJT(+h5l;*WEYMC2fujLK=RUl%ET7B?+=-#T46ey2u`-Mrv<7C3+xvz>pl@qn zUgJIhy?fxn4@HnTa|yAa($Flrn*Ax~`nbFN;QuobKgmDKjhdnU^Y@>1g!n3oJTm)336 zZ14R1G|~a_Dqvw>|NX8cWBD|QrvWj0y~>0l+JTHPS8bwxXUK(hC@V9Xv}V%>8s%E&6#WPP|1 zPm6?^BxdC!sR-m!D;h44{eTz?1XS!un1LX|_hCTsYJ~o<1=XXaHZYq2ft5}qO$}ak za*GAx(U@sNoB5hYwl0s_Yt_UWnNuAvy*JILoe5fGd9w4WHk7A~qQZP=>QBwK&nwR2 z`O1Hl(+?OK`QO%h-dH%mb+8sE8gI2vTJJ)t>`pL)eb-=uDiCbykm^p|9HMHT5p2eV z1mX~Eey}6uL8M!YK(m*aLIivqMh$o-cE=7{_8$9VJoa@L3v&rBeb|7eMzMCJx`%R> zbu}U(>7dsH8Vw&57A&@^LFpLtonEfo^-gHVC^rPHR=l z&~+tO(vn$PT}X%~w16Zo_^YR1Y{OK53SV;ir=~$SKZK3kpj?e?L__MJ+?SwSh{m3m zWbsd5xATP(*iLla&fy56qsmV5cjwmg7IQMtf)LRd@ReJ7bmdA8jfBuB1yjDneDSY` zLTwp$irB@Ej;HLZk!3Ws&Y?zj$D#?Jp{D1$?!rts=D(sr97QUW8E3-u#kG@6&c(Fy zz+r5mVC=7|*TVCVE^Rr4QB_?P`J6a)QW%F&i=CjV#AShGqM~F7_Q{h1Gj~c=UC9z` zQ-T6hC}u@P$?<1ZqDrU%te#|{n&3~;#NXNiYIDN`?+&D@>kU+ zoDFMX0ZcPlTEQOou1q@JQ2)BaTQ0%ZeFPZxJgZm@d7*7j(ZREjDIju0!4lxWYzL>% zC;s{AhYqelYH)=6u}m6D5DiKQ%@+--3|Ya}&k7PE^!|$ zbv*P$)8(W4th2FqeuZ^=dT_X(;HqIKE&J70Cbtr46T*9a6r;m48Ai`Q4_qJ)+Fs$s zTk6f~d@%)GJcYOSuKi{y^@HgO`s(3alKXHhZd6l0i%mJIEj++QmeMGnAaPgFVRCY< zrGtdkE9r%{G`aXe7Sd2cR)zGJ?N-tN7gf<)0#?NedXZ)9N*tgfETz*bXs41Kkm|f` z!?t4^C;*e9fdb&51`6az^?Z6mznFY_AsF4;74%@$#uap|7~|=rFRNd`Y~ep_K9$pR zwTMGzxWTGE=AIoG#F6K4V!alchLH<2RkD6{zEJiQvvbO8lymZ?W~ht@><&K8T&?0@ ze*vXR41g;ZxcwI){-ZB`-e^UgiGp($Vw1ZQ_XZ+q4d+0^6Mp?87yygj5xE)&Rh?z4joeYI?F2nIY+@Zh2k?_l z!4xpV0Ec8;x#Pss0s_@@3}6x7h>&wle2`)C{XxRU1sQ7bjTE6I&@OjOU_^ll?EJ-< z7DtW(llD)|AAQhgOd}3z+Crx(;$iB-pJ1#vN;JZ`@YBIMNoNM1v2=>I5mYpaLZtfWA_tH3q}9g)>v`Y=tT~#Cr)! zvF0%p{riN5%Y`b>&a0evN;Ko_NI3}z0ExAwObuYa_`KWe2$cgE&vM=keaEDXNB>&u zNtRXg7xw8J3)dB>r& zc;oi*P;~)=y{T3$+uHZ9WHaxNSTW z>v>+4%qgBfzg2J*B z&H8q?N^B>&b>Lg>y(VdgYUE$is5wWLjoe!N`A5Bv6}h(h?c&z>guD1cBIO^_(9)$> zLWrKvWH9Q1VkQffIMrgk1$^;X5>*YXO@e%QF8q!3_}*5QoSk202I-wDZj`Qp%u-i5 zLNP*;%wWiwaUT(M*(jF5x=^K*&Ej&y*T;RFKa^lEC88q^QvEE*#ui$)aKmRL-hGg z-Ud^}4dy>K9hX-1{xFTA;5YM<3#9o>*n;GcI;|mPHN-L=k$>Al7<|5;{6doyAxDnA z5&2P&+s2Y$d&-9dayMNiM&ir*;*wH$lGEngpvs8)pHbToL5L#A*g0)1LGWmlaBiu& zZS^`-$p8HN4;{>|rr@{35P>U&b=>!+!|jf(qz<&^>I<9vHzI{^<}7fK#UV;Gdv*${ zQu{SRF$z-Op)IxwRr-b1b)*X6y-^EQM1`zWr3Q{Qq`o7$E)}YLImjyGsh35hE1a2# zDN&+{T-Z-m+6FXJp^9(=+eNaHp@=eYec(m3J|`9p(ta-d2|-er5H1>sM8fa}C(Te8 z;KwyTq?1;H)}VbF+Gx!Cz?1$QPe3dmtX^7H!~Z>&&O zPxB7Y)|$n9W(V-U?;;X_ww+xrEpM$G3F`>Q0$otLd#Z_jM`&H(G^d%me;HD=lJeuU zPiZVBc>7KKFrek+aYWM0t8rFrJ%>KG_jS5*af;M!TQ0sg-2*)=k6~wLW%NfSnrId! zccTksq!f3z{IqAijM&x>Zw5JC(WNnl>&#^$j#Ed^P}iRRbti&}?QZ)NZA2jSc-a+R zt&c5`%;C}AA@ zsS}Ws3W=5sh*6AW0O&*l^9e__hywOZ8QneH7*;YX(xYOibc!vGUklWBJA2>1?Uuy(q6w{Icmo$@JT`yFOx&K9%!Ue)S4-TaO^h(_9y3 zarsHju9WqZsIB9|vvS^Ys4Sz5*<5)xXWKl!HUUu%T4ki19eJ5>;o77eEPK*2`^ck* z<&>MXt4buq@Je5d>N9$Z@VTF}!PfjAxFZ zUFg!=NIU7=Q%+b%N+X&^4a?y7Ub)Q=tot)IEBBF%aXnS=!Bkg&BXWGO<>li2&H4IEh< zGMFF&F%?6vS>7)92?>=V*Umpq;N@%%V)wjOjXq9S%y8f@pBjFywBfF}`)A6{w7Nc) z>vwB?L)SaCUH`nH`g^Mm;o+4(WO&c><$db(Ph`#Ig#aafk&&9Ib0A zbq9WGfUj|)q*U~pT(G$JcBV+ITQ*c4m@dCG9`MTMDFwX*rD8~JkRrc&ddtY&WIq>&D2B7ita=VN!@3Z>wXF+Im6= z`8IJDJ{bq;WVGl9dATI=D$C1147#CItIUye2PBZ%ALM|nn6E*rB+k97SUpTC1Vuhw+AybOZQJpU`HaW0TpJACjac|- zJ6Se1zfiBgSomhRgH1FSls~z;UQ%=Twr0?!W5op0v~PA_ z`x#bMVhy|S?_v$}El2r<&a;6W0Lrs^Pk9R#Lkl?11A&nmlk4o63g(@hnFFs$U-Wh% z+&2#ZWNiuH`aSLlKnq#*`KDz)$OELm&VDETn@Jkhh_5R^`ZpVZ^ly6r>7R>Dxm>8K z++O1wv81;J_JO$W@A7?tb?4oq2yPYttG?EQZyG$vZ%#VVhPzWU*}cxnb&te!g4~H1tESokrzR=wHDfI@?H5sJeGkIcD70Qnd@pe`r|G!J z@np*o4>JeZUaaxtR1={ia>dia0@QG{l| z$CDqnn17A3&(r-N@1>pp`g_WVc%=)lM0r&?I2qgjs(r^W8 zT>3(82N6Kd?Kn1&bIYs`Ul;HsmeW*bGE*~Gf1jQ&o8B&4&WeV34t23O{vPPin*Fu7R^dMff;10z9*rK3%yz3q5&YKJ zsNDYGl=#){^S1P;^Yr3S@@bkLaW-0X%lUC`eNmo2lByqC?|LUUHu4L1CFp5`(O!Vc zN``a`fkod}N8APTVb->9mzS^tULhH=2t-yF<#CBA*CBhUuqR_N)bA%4Zy(F(#PlEh?9XxKau~NGG3;v? zr&+yr1@>g0WA6^2&8{mczcwUAYP2q2Kd3&0gX-z1#45 zp9TnQ)-3m$!KSZI+qrrlV%ukBcIn9Y;*el_oZIY9uW`%WntW6AFu0m!4xTRep%th= zjmXZvTC3xpS-TdPc|AHsKhyNTtSBI#-ZVelkKUxVo3{vXt7WhJBEnVau1MU=s8lbO zkQZ4q*z^{1_0dvOu;p>b^=0*Rez}{zZ5l-^uR8juE0k$Foz4nBd76Ghk}24VUZ}@D z`LBt=^YZ7RTT^|Wre)MM7p*gf^DR%|VsXR|j*!}M>p3NXU; z?}+UK@7)Ms9$VN@X!=z9@OhU9dS;5xCThM_&1>?|M<)*ZcP2Yp$5LLu9IifnZd!V# z7H$%BQ{LVup;mtoaS5s33LU6ZPTzWmP@S5Kp|UBaa#}oTa`e9b-+)i<`u{!Pv%{nH z*zWxTBc@t>BanO-K~kwiM3^m~H>&o*Y+#z#>)G~k{c!*~je34H9rv-=rDIH{HKM=? zMk1c)qeLciRS6Py`#L%4iVn0#WAByt?L_(Js2JcRvlk^uV{O;o`tiAwROg1~^4K(J zwzf`_NvSCFDN~nNEwbL93C#(4c{3rL+nTSdr+UP z667R(86k1hgE1DtirxLSW&NB+48R&p!S+H^m)u)-HCGdHzd4G9?n7ppJm*X(h$~Ri z!np-*wBrOg!2Ki=MAPe}((3m0jGKsGhLh&BQhP*y_>uqd_vij{DTS`$B;3#$m+z;? zP_k*_Qav|FxZ?zUbWRvEw)UkKy}e-3_0m!p+1 ztYT#4FI%>LG65pL20do4G*f99dP=m;;j*Skp!+i8Inu3;x00qqn03$sV)qjQGh z_$q0%v-KXD6f3{F_Ql`Nr)^ib2qu47V4*ZKq&c&mT!)$NiC!y6;;j+`>-v7!@O~@i z@hyXZVoqK7IXE&hJHm#NXO_K@oUpxb&ZzJ0>4eUs7H68O_uA&a*U$ShfceYvXQ^R# z0?O9jo+hjQN8$MYSV`7#RUa@fD}T{cTj=sk{yl?y4+HttLZ_CcJ{@if`nJHUL zV4n8PGrqR=yR9iDW@M$;J{034MF8^lrB=p2uDrQ)ZG&Y-E>XG6iQ`pHPSj|yqz=rM z41Y2`FM`0PyNg0tZmi+YBkMT|avnXz!?DUr;I~x8A0Z?sMq)*40+W@Qc{Hjr;taJa zGU@_J{GFtlZe_XlQ$NcpEOU-uK_>>wW2rFblzvp1Q8$(hkkW)%ZbR_2rv(}TbpVz4 zt_lOB%-@0t(NqEkp_uvoXcHMq$Se2)Kd30xj$o^dvQBLLJ>DfzQy9Vjn~$l2t_2++ zwRC1s??uGXPUhu-93Z7eE2sb;AcdwP%s{p0ghHK+0hLHx0wqMTObtgPr0`&HZ3%Sv z0r2BLt?zB{LYz?BFVNfnPeXuIsL{XE1mvLq&jkB=o;jy}IdN;q2+)b|5I~3ms0R&@ z0%9U?H1zrHIdK362#^BwAf^hlOa!Ki>lbnbg^{K%ijsx`cpAJA&90o8hLHd%Kp6%| zJzCL8DtsOz)>aq#Z95PkwaDiqM3Ijih^E4PIe}(kG3tz{wcaK;OnRYJ}BDt z=kMer*L|AJac+uo{E{7OPuA{ia*Z;_e@wyM%yK7R8o(43l}lMEy=0o+rPNvq)%^1t zk5&*g$=Qr7AkTT>ktz1s^Ck=X&HFpQIHbZxe}ogQj8gP2<+PJyB&9(nCQFu{Y%*ep zYp!ouyJpjVOV@;By@yM3;Ww(T&u^Xm>5~Jf(>C+MWC+u5L%jF2iw{Sx4Xcim#l~|- zJ57n1Cl{_sORjr7=js2Z*Nr_4EF7|(kl#Usn3o(<&3Rt+PXHy%ul#nab57-3Ld!G8vstq)+<>C{U-r zShk+KV*Z=iS@wL!a!x86;a<=I^$?_P(M?u#K7QGj!b>PSb0+cP>Bw^7MINgRfawgHd<+bF`P%v&kK0?)*dOI8&-|p7pcc0h&6e*i zrtoTHRArc;F2DU+uiA9Hev5SeW}ZYZ;X2Md^Ss6@1Ol=W?0MNHPdZB{DhdORH2=u; zQfQwsOwy4N(?)jPtI*ZrB`DUyA_oBRcJLBL8a1>6c9jZSw?d;Z16a8Mc9$9%nj}jt za?I6{m@hOt3NyaIK%C$|Vv1^i)tlw1VfVi;mz$nX-vx>R|PjQgmjzof6(Qqr4?vd z28b(Jyf9;*Bn!PTm*}(0Tq#{$(G~h=I@l?q=KFSwIzO%FD6uYr(8$9MG!9qq$a}(bqM>9T;?uI>ne4|Niq{vqYdnz^gIJqtG@C0*6A2|4-x{ zgV4bLKH26}e;3?#Me>J&TO&tUTS3J?0yqffvFYAFETQAm*i185jy;)MpcF{^UMQx( zJ|FxSuw-lT?PC~IZ4?AErzPyh>r*NNOW)qK7S3Bo%f&nVGmHuB1cXK z|5USo7xIm*Nq&w!Bxp5of(9If2lX<9e-rrL{N9My--`zO-=|eUeMJARa~ufxe@Fh) z@jm=8`)Q}^~@e!VGmTimf8bsQE30p7RK*v@yPzp7G04*ou}aD;8F~* zeNV`*eC`TAa{KosJGx{CFNR9(<1O2EH)u6B7q-p`O1mPb{(n5Y`;F}!`rYs3F57NA zm6O#r)Bti&ItMQ(9qy~`jcw95zb;#%vp>KqL`kZ!&ripyu(!7VTF@0~36kDC7@KWo zLk2!{ntrTwW9woeb!*Ft0}$k0GAzAIhOS6JGUVC6ONOatKr#Sy-vCoWCH!bi?dTDg zV;^7hba}G+E*0*>7n*B3JB{a?0jY3fTeI2Y!*ax-66g^NFbDv*05)ZxY8KKX+Pg)j zu15X$^)6GtGsK-iy%f+v=#2^X<=b`A} zswh?Ih;)z^snS#s=^z3kML2XM6s1cDDu~q3TSS^vrG_pgL3#_)dle+~-mAV7zwiFu zy<@!h#``B@>;s3e_gQ=Hwboo~o`3KB$MU7v-Xv3g?jJ&#&-eEpJ!~0(jOYmvc$hCMQ^E^Iln-fRCMIci&mNS;%~L5uEP-|HMhV8G9zh zbjS+kJ_y^<4!O`CY5$sP3t}NovX3*3yYef=z8jl zKR@Yi5!z5{weo@GxOC=y2Cb^ZaxQe{N@UolJEGc%r#oQYO{;a(=8a}6gNEJ?SdQyK zm+mafO?L}S|I*ze3Sy;8mk$tfCMfupkble^bix1B7k`Wj++PeL7P#N1u0Y%3H{KDT zlXtyFK6C`vIet;?0dvDcVBqR5GX|42grj**QY%09%HlhdM`~vynwuo&W&z#j3Zk5w z{2S~qsNG1(;>9oHr|Lft>2xFB>vILX#F*!EMZo7j9|PX@_4wo0=5uO*G~>L*e?~0J zjvReGH+AQ2xgnz-=J4JlO%BkFz7-`M5G^@8>i0E!1yFW!8>~Y-0!uT)xjezJE zUHK3CnQKujUhsgo7ZDh+q96V; z{^CFA_g|yG=vRnGzkl!i`zsw2-ZsvcIwtTlAHmPOa{`=sd?h$@jgdt*c1QdkFvjlz z>;$+6uoK`Oxb1iq9$(q-To7A%La#ic5}f;VL?wVjdxW>sLdoG?*wu_j&@FQ#v$PZgVJ8*~Mvg+eq2vtcZ|? zb^URP+|AZa51TC&MKRDRP+L?GBa4+$qxf9O>XM3d*~9P1@G7eZ-F4D7C8G1(ay|SL#PH& z#}j&_B^?(DdIha;yjQTp26_ea_c)?WLXXZj=kF1YH6o6*4rS=YTH&Bu& zSh_9A$YS4}w2fHs2lfK3@TZJrEpV`AjOWt+%rl`GygE_H(MO$Of)+TjFZhix;)VOH zm#*CYsU_=*jq{dC3!jeCkK`NlXvY|qu%a3#<@99OG7Q+;11?AplNAjUSi9?VsmDNf zkx=gMZ1hMt3|tiQ-m{kw`QN;}-l3vsK}J|dmaIicD0lfZN@kf1za)QGD5O#I)@11H@NAJ1UdH+d+}~$RZ>EKB+NF4a?Kc2}%~?D`isjpVMrdGubO+ zDw7mdjaiu1OKhFBZwl#-v`Gm+85#Kz&2RiX%QLi0Dy=^O;wY|GCM6|dTPC&0DWnA2 zGCNmg+W4dZcuVu!Yh_irU-DlWKfhiNQ$!4PU)+~_&o^!_KSEB=GnmJE$4i3yqRf7~y!>6FO2NPA@!@8!d1{>KKjEfZ#ybZEl}$2e zy!({%-%c(tIRticCE`1|3Rvt(fRyaF4esCnM=#gQ=i_;sn~QH3+hh9cHyGkp7Jl2+ zrkFdu0kR^s1^15?vRZFWZ#kd5l7VfD14my{+pD0i972T3Z(48HH(zb^zMkmV2Bn@f zRWh4#qWipt6JCv+zC8b6N2vFJbI=hJYr#P~lkvT)&EB~e$Vx zJRR534<~PmI@&}cTNifhW9=TSjv|s>$>eW8{8tMt?EZ|+FKB%6dERopmcqn>Vw%DiUH_PG#Z>NM z7-e20dj)b}Pcx+bJ*U|;ic+yEh%iIB0%h`#{+VP751n@LQ3nv;EIBp!_lrmxv$xE`F4gEF6% zyM`CPmwikcx@`qktaz8wTi*VFln=Oh*SGQm_}=zgBy+>tPY)h@Oa5dLn!}x?;aX*= zD4Mjr1J$iw=z37k;?AlzKD-qQ*(r;YxT~L5=PC*SY_-oev)vdW*gLUfp32t&VDXdP z$6!K6h@czSY_B*+IPwLH%EFTTx&75P!EZ%Em#ybD2A;xHZ_f>b#Ms<0NQ}+3g2dSN zE)i1E`y_HRP^#bhB^z5(IP#2u3G%wN{y0dY4dImit_^&d*ri`QokEkBy!>}KLC?Ic z;EY|(3JpTE4f>ISL#y{V*&P6M%zM2{WsSssDc=?Txa06jjr&(?g-Ftl1GCvlIFdz= z5h5#*6VBjCli2F54ss*ShCSY;K^I1h5IjJ)VdXU1u%Y2&t{=pJx2zvuwj^Xd`hqSL z3M(A?$!YNEHbl_np&-_q-BlOxVoc6pa-T-s!{NLYt%CAgdaylavmr$01WUGj#lLFO z_&)5pp<6EZO}DrKkqi^1snnyiBjpohORa5O342z_&pKiK(U%v{tn^E`l?+FkH;apN zF`Y0Hs^~rPk#huB#2zQhO8Oq>oL&P=T@35xuQ;N%LYj~=T4ED%P2rv!&}ADjcPVAG zzmu5-obghQ%E(w}v|3NWU1P5H<*p@kpLUE+S0RY&mu9k;hGSDWy^3I``cA#;S#1wl%}XYZy*5;=Tb|r|g(hJt^`X zW#t%PAR(e2TBe42^4jcM&Y)20epye^c18?fo9sZy8?EF65}#T=c;XWS5}(I^iO+pJ z@i~AeJ{5gL2@aHfuDl--=*O;V_~84Y_VN8t*$iMm)Ib5)50z~g=Lrtmmj%@J%ha+N zK-X&kQF&RD1G4}Uz;gvW7`)@9h6?(U|9YSRB!JZ+eBH79+ptGIQ`yMW;2M_GU>=_n z=)ywKZH-C$asLycS#{p@nEs@r|nd*@Cox%n;SnSd#HPoH$tPc8S zn5{pwmWIlI?EUU;5&O5B5NAw0{}(j#PDd8{gLmdbut7J=nz9Q^z8sHSVyv}>f%~5% z9=Z239|rQi%gBaUWteXG{$m)8Yv&iVO_Hro1Lf1bOfdZFTJuwkR)XP$WMEhPhr)Kn z>hu9n8So1luMD_r1u6r=@XCO@R?m@|F!1<&?*LFH?OK6iL$H1ZOZ9jpC^mH0cQ_s_ zfsOjGYlRmZLbE>WM>gsK#c{I6PTL(_)u2g>yARH3$|Uko7LYf7!~^a?eTiGVPdjfc6Izc4p|hq(bwYHmpq3|PAQ*hdn~U=4uX z4csfkU6C49I-P0ENm%^=8$gO7s3jx=sq(BzG5m$!@>+4- zFwxI>3+QD;2{-uX8Y5Zi9eS{(k?DI@6_(T~c-~tE!iR{v69((){-v`oCJ!moXCn{L z?ZZ-v3+|J+0)SmMhxrfB`#o5Mo4A`TU1=1d;G9OiqcW@pny8$MMW(jpqU9x|p*Jcm z@{C}B;tjrM{L;PHU8nX6uDS!00V3Qms3nCPwlLwqDJye^@9z2{dSEBHIl+-S`$@^c zs+>!>`wjAt*QxF|Gz6@4BnQB0ft2^2o05!Ol1Rzb12q5i=jc6I3+e?I0PMtd1s<|j z&ZEyaQ}EQc44(SNp~2*X8=m@JK#z^!+<=HI!PGr5rS$*P^bw#4WD`s@J^zvmpyk_) zLkn?ruAADYA#YYI(vQhck*DtMI$fXsf@p{`YMI#=ZkO`@)Y%R@ahlGeJIr>0P&78bMSAmnh_IEV_OK=&)amtN6 z$-A*H66Y=C*%UKDQrnSWiLL$>Inc{=cymf2$vK6fequDrKlD#-gyGlZ^2YPX=v<~#g3IU zrxbjJvvgs_l}x+LFXL=$j6c?y@?DeA1M1^cN`JYi%bb8G%3Tb9$7Rqg>5D$@J@lSR zlSZiwc1c4>X)RL>!I}>+qhfgE^e~NKbi0Ea!!}hDVVf*K*e1bkQ2OQhO8Oxup?(9r zvkZF}z%hy#pb!W}S>o{LfSPY!&p}xPQ3xsvdjK8+oh`^url`k3k7&&?I3Li*@tDVo z5I1jp&f~7vQWD+a!Lq}fznBk>N#Dtw~&GS+%DF~uFddH0mY8(iJ~3L z?a?cV6fHN?UKqP5Z!6w{60N;cQ2b*wnF!&~1I2eQFV3<|Eq4rpk`r-$GA#%1ddx$zI zitS;ObW3Oa(sF|sgtM+;k$#s7y2aIiGc@3ka?BL4A4z@v`2U+%nN;XQA4Sd-~u%f?O zT$<4bdIMw|!-fVBjLmMJRKl09vZW7rYn7b{B^Lo(TY&fpFD+AzbN_z8NnQ^Mse*!)Hx!}OPN-;g z_(|6FbE8+i(xFTmSOOKcZdhPK0M&{ z;{h)dLrE<|+d!FiXysL6I)Sh>5!x7Tj8>RHIGc%V3`^JUmScR$H(LF2V-GVSO|jrQ zf*Q%k`B2E(B^x+i@^%6d`l_S?`HEDLdHi7kT&61StoVn1VJL^2hj6n5XK~od4>U4v zp^7F~{))XXXM4joT7E9WL6+M5?I(D~EBAyR2ZL!rHNti=Z_+y51xBODgdEdO?;kBl z+_;y;o(szPv8#uY_?}YJ?MMnLN2(S>BDSO!!vJVt3jsY`yHlf+Yk3W*)ig@j2IdM{nDWKm`Y7-*GZ( zb5)~}wDHE+P>6x;h8!cUy6=I}NWH5EZVArB8+gpDVhk6!25m8f*lvJ5=AVvz2y8c! zz^4wvgOFoX<~?k8HQ0p`$ErQ5qg@<#vfP5)Fe*;2eNS7TLVQAH+N3EmgQe6PMN~U% zzRq)a#q%;YcOC)fadohxq(Y9hz{eHsd3 zte>jDhG#XOK-i(|cHcL<3Bi4%LS%v5!aTs5#T9q3dy9PyhgxCKG|`5CO89LI;k-jq zh!m=G;yZ4T?+I@5*#IM%k-w1)#z>~(UMaxIo+q#gp7OpUYui)1J%tP)!7x&Q;fN_@ z7_7A!DS&$5zQAQ9Mi7+Rx7U=-KG>E5v3Pt>CMb) zycOdnCn{7tB_O*7V)g1`-tDis80)1{I@cB28jnch)!?@s%|jj_#Bh0u2Mb>0QEb>w zgueKA`?r&Fzkv;UK z0a0!Tk8+^Dcm zFTTpH*-+beTnM%nLv0Q=CcZzmnr9K(!7ZjGe@J?gnw7*`AL9z;TWLYQkPD@$zFF~> zdmf8*A9SgX3|ioJZ@thR^ATS0Kf;6j5gz1^GC64sM`p?y(a0C88R{NM$*QWn z8#s9o_>A`;RTcS%68{7Ew*6r#RDp*RTcimUh9KAU2wu~ig?Xf)XE2;b@c+O)9XL!X z@Gw(JUjyE6p_YZ=W^x+a&I7l=p%s{9?E?zGI9#q^xH@YAh44ji_LjmJ>EBKWc3ceDBpXB8#R(;dNEnXXc87X@G&o`6_Zxjmchqb#lt+)0OMxL_6H`}6a;p!l z7B>NgI&>9=+XPUQMZmk5XTxcBIqxPAm$fc!@L)wIuin2Cv6s;YfK+Vk;p+X%AcQ?5 zch;#uURKM`pSa#YnSLlMUx^mqz{m23_*i}eAIl%&WBCe0aL)fv*hl?}mkEL~+obi) z1Bn}1bb~VMcU0TOX!&ph8gARbTL)6u4cAWE8ktFd@DpJ1IjI)_37n%i7opO9>Cn+yj+G&SeA(3Nu%LZe-iN7%( z93SJsL9x)VLr%Y&@*Az|7Bv+N%@sxy1z=fE1;b>m=|lktdV@f*YA%Mc4?HLLm5pe@ zRm7imk{hk8hg=yLd~($uvc#_(X=me8W4*o2a6S$^TW)i0(H9Mm*}x^gP2qb#0K%8# z5B?jkKW3#q3Tjr(s{DdM_g%e-!YU?G3}bvDCGy2#Q0)q29Ji%Cw^csexMpcw1p(jb z19B~SVe54*l{OZf?O)R=9tbvHkavAAyhD%^ULC8;t}t-oxO5(=Z5_Uf#nyHdwr4gTp&E9eBqE z2Rb%}iUx3vS_Yy|8Z!uTCHk#@9J`|`tC_$4Jsj`fZ-f4Q01hKRDlu>5$KHo_)5}w{;w78MbUsy}FgRb~;(#$c35}*Y25lL*zUQ!*z~EgN}BI#MR}C&!l#M z;_IJ9LaKwl$joB*X|Z9?LwI2!5Wzd{T&1D1?LopOGCTMfXNRYOf$ouS|6QnM3z9`F z1l2Gk%xAwMA;?~Dy7hlSJ*Nj_MDqx+s3{ahM5;);gLidy@UG50R?hDj6o2=fM}VaV zp%9Q;X)y$e@--_-X<=Nm7 zor_i*F*ES>wG&*`&;03Z{Sq6AowdHUQ}22h7e4lsuPJ9uf!YUamJNs}*~&chDpE!$ zd$~XVk!kjpLnT#wbg%5>6lq`Gm-aELY+v0gIpgb_*eR4>ilfd8@gc=4ZW#zq=65wy zLEGi1dseiJxWlii1@&KHl@Z$I%Q1A?6~CLgB*;el`k3{t2SEWMU9P3&=6}k7M_!h- z9!LzcaX_2{tW$m!u>?H4W#6_1y)I$5tT~<^7sJ;#^}t)ejJ`-UL*(_h1xLoH?b8rm zhf?4=)Afo9`QP{7p*OtcMe0^|yq1<*De7fL!)zV@k6S70s^J8D)vyZn1@xb);di1nN;(Gl9Bbmlg2@->zrxpYMB(aqcJD*8Z{+@^`k3&9|o23?j-Ow@T+dqyACkW?&qndzSnm zlGSQ~tGmC-Co0!A=yhONtN`Kdg|FRz>weq#`c;gc7e4;C?)P12->-(rH#)QElX>lN zfrT%tId$lpVy}J&{Xh!#2H$ERC1#;^Qh0dxbGq`?NNBm}lBnYE=F2s)j$dvZZ9Cqe zG`uw9;Z;_^rNU@uvhm=<;|O~DxI-he_Sg{5!71t5(7|Qy z)VGOr>FJDLvaww&&^p>D!^U@(^(sChd)t!N$zgAoGYgz9g7p^@NFHLnZX8VJHycgc z3KF^x6Ss;H!nlG{_c0{4iADF~og}UH^xIyOXJ^32SPRNy57T-tj5r`bw-dW}sq)QK zv3iq-l6U1Q#e}XpDVs^YcOyDec%po*JSMLqW_h@!zv#c~zCi9={fdjyesa`QBpHVJ z9^VtDm1VGJUv(23Z3&mjV5*=nFH#(oN_Z|I45meMIQK)dV28((`*o6yQK0TiqV-?h7qRqp&b*Yy{sl@B@h{))Q5X3-7i{jo_eU8IImqsDYm`Y_F<~3R?mZ>a{E;6 z6XL-GTP>-e@zVr?)4k=Y^Xp_8i0Zr=ICX}r>i=5v#Q z1EZcl%1RC21fUl)jrqf>nS|+&--sJNA&CjB?wEIuVW=KXe%1f1qNBLVbU}Z_6Njd> zIc6jyzMp~>NQ(lifNz~Ksf%$ubzYFuy=YsPpFYta=c7!z>|pt8VPR!~nT(}eXG^no zZMPf=xqnY4^rm2EnHJ>Tw1S&e+V6StrH-FZv&=QfT>kb-lG8Qzkl4kmLgU9I8;3%| zIzr4NR7)eNe|wwn7@!d8Sa`kJj9vNQk6z7po#P%aT^IHE=-*oB&31X*W`2Iubp>G6 zBxac(s3bUu|2;f$BKfVM?21o}{tNe0@TI!VTo4{eugD9(z)_|4&qcv!D|Sz~!@vwk zrCWd?ZL6$nCSOs?W$?hvx~0eM02ZWFx&_~A888-9y(?@aI64!pR>TTM3Pq-a%NnCy zGP%nAUHuuihr4tcER9WMz+h&a-rp*d|xK z&|7=ZUm?AJ6e?V=Ih9qqx@n6`nJ;>W47EvKJCAYr6;ed#%<3dvGPhqj$2uMm$N%*qCe)8uv%J@-u*1fzcXZDSPzA6f| zfo5M-;CbD6KuqNHgGH`Qj=Hf8DR`unR4YzZ?$YnA9-#Q(3L)T8ncS-cwflO-chAOdr{cgQ2@>7I$i+*%cnH1KaO(0ZWJ6j z{P|UMQK_u}r!jSia1i1Y(VLpC|3+nD__4Ik=e6hSwKkEnth!Gl)nYf4O*e9nEmlRs z9#lQ}?iJUAoef*tr02nftmcN-0CIf{-vM9d8bd=l_~;pyZJo9FaWr>kw&jq>Sot=g$o_wds%j)}e7+H8Q6~yA8lu^X#^ZAw|cu9ogxbRR+X<{|{Yy3LB8Lv;?vGdQuj*)JLP z4`xixW>1r;4l!?k&Rs0sJpf-DSV5JxF*5i=yyEt1z~@aYg+rdx8P&R1BEt`kLkvyj z(f;B^<;}zIO|1TTl=q%3j($3nmGbYq(e=`ssax!5m8v;@YHgpJz!j3NB<_Z~ArdhU zrgk?E#>R2(s3(5@HON^Ht4+z7CmNe{6_nkWpt7sI7~(w_$alv$H^>(IwN{MZwKVBD zogU0XsQJ|+a*ToIPrx@~N>d;}!?c|s#eTE3(oRqEz<3G~R`!q)D=}3tQlZQIr3uhh z*LWmz?O^^>RvE469E&o>TS?7~InmFDsk4N!IghXp@w4e;S){)!*JlO}I+O+{Ts5{Y zS(fa8{ESEg)0F!q8@R7Ss|%?Z)(HB_FsqT{W7yri;-3x7U(tiOMwt_{9_$(=rTZMn zN?kg5U&aCuBeXE5&3AYXWba*37{V^~g%1e^YFd9~c=qB6s=Y@f-6xRnnil3f_qsl6 zCrD2Z_1V*6RWjbpWmP$3`w67x+A7YSDBR}~6YIxqOn=%ZpTL27`c>TbVB06C=y!-5 z!1SsH3!VN`Ivot7YGA{v&?-+gO>D`>)54Dqkf%?cwocjJIB1HHsC?o|0F^kj`eaBK zA<)Hayq=TvRWmMgtROc3k>|A|#7`h)G@&K5hT*OxlzF%p^KfgGbxLrZivNf_IV~0r zTUvfPrOC-U54aWZteJ^ZeIbj6Tkh{yBkR6!`B^@h!oINe+8o|uls_UYXE7zUekC68 z{l?MimF5pqYvJ4tE)cYQf;BBt#Q?rDSYsGfj#vU337Xwdek&DIYs5-dY7EC@g^rlJ zMdXjHD$?O3rpe%!PW#ORPe{pleP31ZEdq@ds1Ih7CpB(E?5`spfg`uhnQUR3Oi}C{ZaY2?&7#$+=I-KZ5ubIQ&+B< z{%-Jo(#TBjsGKVI#>4YJRHXiOj_wyzNh_Hj zQ=X!pw{6{kUEsaf3CVPeHIltWu$Lt1&kenPzud$!)*_~mqDQvfZavNV_NLYSALH%&1Sz zIfXJDFH$Ai9|bUH(HEongB%x=!a)km!fmXD&r@mlc6aH^QOahw!LLSzTIDR9Ha872@vzP%B?|fnkjFbWFS$(1gJ0DrUt+RFD~H#%RzlNNIG9=HNy<2meQ2wnTgP&Y%*$J zn%(^daEC@Vs8N#C`#!THGrx#z41nCJYxFEB|I}z`&d5t_{(}1wDVVvG-cD%A5&els z>$l2iA8!pnS@>Bt8a8;CY84Uu0tR zB^j)z-KO&`peLxm{G98!DKJqjFZ%#6mC9`yhLM;*ax2UUcK~Fr)!R=?FqeM?K7(Io zh#un3=U$7S$tT{HT!BAJK;`>j* z1AgECeJ8hJHImIlDsgz%DCEUE9|LmwTe^eV!ayl2rRqdSZyt_QrY3>S-f-b zFw%AYqgVya5F(+r?fqQ8btmhPW4#+BEb$=*oyMI7Xv7j6a@u1PHlK@AweSlcof3sj LZher*RU-Ib=x5uu literal 0 HcmV?d00001 diff --git a/src/main/java/com/qf/myafterprojecy/GlobalExceptionHandler.java b/src/main/java/com/qf/myafterprojecy/GlobalExceptionHandler.java index f6432f5..a14a3ff 100644 --- a/src/main/java/com/qf/myafterprojecy/GlobalExceptionHandler.java +++ b/src/main/java/com/qf/myafterprojecy/GlobalExceptionHandler.java @@ -1,8 +1,5 @@ package com.qf.myafterprojecy; -import com.qf.myafterprojecy.pojo.ResponseMessage; - - import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; @@ -10,6 +7,8 @@ import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import com.qf.myafterprojecy.config.ResponseMessage; + @RestControllerAdvice public class GlobalExceptionHandler { Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); diff --git a/src/main/java/com/qf/myafterprojecy/config/CustomUserDetailsService.java b/src/main/java/com/qf/myafterprojecy/config/CustomUserDetailsService.java new file mode 100644 index 0000000..5bc0be9 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/config/CustomUserDetailsService.java @@ -0,0 +1,53 @@ +package com.qf.myafterprojecy.config; + +import com.qf.myafterprojecy.pojo.Users; +import com.qf.myafterprojecy.repository.UsersRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + +/** + * 自定义的UserDetailsService实现 + * 用于从数据库加载用户信息进行认证 + */ +@Component +public class CustomUserDetailsService implements UserDetailsService { + + private static final Logger logger = LoggerFactory.getLogger(CustomUserDetailsService.class); + + @Autowired + private UsersRepository usersRepository; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + logger.info("用户登录认证: {}", username); + + // 从数据库中查询用户 + Users user = usersRepository.findByUsername(username) + .orElseThrow(() -> new UsernameNotFoundException("用户不存在: " + username)); + + // 转换用户角色为Spring Security的权限 + // 根据role字段的值设置不同的角色权限 + String role = "ROLE_USER"; // 默认角色 + if (user.getRole() == 1) { + role = "ROLE_ADMIN"; // 管理员角色 + } + + List authorities = Collections.singletonList(new SimpleGrantedAuthority(role)); + + // 返回Spring Security的User对象 + return new org.springframework.security.core.userdetails.User( + user.getUsername(), + user.getPassword(), + authorities + ); + } +} diff --git a/src/main/java/com/qf/myafterprojecy/config/PasswordEncoderConfig.java b/src/main/java/com/qf/myafterprojecy/config/PasswordEncoderConfig.java new file mode 100644 index 0000000..da61502 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/config/PasswordEncoderConfig.java @@ -0,0 +1,25 @@ +package com.qf.myafterprojecy.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +/** + * 密码编码器配置类 + * 用于配置Spring Security使用的密码加密方式 + */ +@Configuration +public class PasswordEncoderConfig { + + /** + * 创建BCrypt密码编码器 + * BCrypt是一种强哈希函数,适合密码存储 + * @return PasswordEncoder实例 + */ + @Bean + public PasswordEncoder passwordEncoder() { + // 强度设置为10,这是一个平衡安全性和性能的值 + return new BCryptPasswordEncoder(10); + } +} diff --git a/src/main/java/com/qf/myafterprojecy/config/ResponseMessage.java b/src/main/java/com/qf/myafterprojecy/config/ResponseMessage.java new file mode 100644 index 0000000..cecc438 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/config/ResponseMessage.java @@ -0,0 +1,257 @@ +package com.qf.myafterprojecy.config; + +import lombok.Data; +import org.springframework.http.HttpStatus; + +/** + * 通用响应消息类,用于封装接口返回的数据结构 + * 遵循RESTful API设计规范,提供统一的响应格式 + * @param 数据类型,可以是任意Java对象 + */ +@Data +public class ResponseMessage { + // 状态码,通常用于表示请求的处理结果 + private Integer code; + // 响应消息,用于描述请求的处理结果信息 + private String message; + // 请求是否成功的标志,根据状态码自动设置 + private boolean success; + // 响应数据,泛型类型,支持不同类型的数据 + private T data; + + /** + * 构造方法,用于创建响应消息对象 + * 自动根据状态码设置success字段 + * @param code 状态码 + * @param message 响应消息 + * @param data 响应数据 + */ + public ResponseMessage(Integer code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + // 自动根据状态码判断是否成功 + this.success = code >= 200 && code < 300; + } + + /** + * 完整参数的构造方法 + * @param code 状态码 + * @param message 响应消息 + * @param data 响应数据 + * @param success 是否成功 + */ + public ResponseMessage(Integer code, String message, T data, boolean success) { + this.code = code; + this.message = message; + this.data = data; + this.success = success; + } + + // ----------------------------------- 成功响应方法 ----------------------------------- + + /** + * 创建成功响应,默认消息为"操作成功" + * @param data 响应数据 + * @param 数据类型 + * @return 成功响应对象 + */ + public static ResponseMessage success(T data) { + return new ResponseMessage<>(HttpStatus.OK.value(), "操作成功", data, true); + } + + /** + * 创建成功响应,自定义消息 + * @param data 响应数据 + * @param message 响应消息 + * @param 数据类型 + * @return 成功响应对象 + */ + public static ResponseMessage success(T data, String message) { + return new ResponseMessage<>(HttpStatus.OK.value(), message, data, true); + } + + /** + * 创建成功响应,自定义状态码 + * @param code 状态码 + * @param message 响应消息 + * @param data 响应数据 + * @param 数据类型 + * @return 成功响应对象 + */ + public static ResponseMessage successWithCode(Integer code, String message, T data) { + return new ResponseMessage<>(code, message, data, true); + } + + /** + * 创建空数据的成功响应 + * @param message 响应消息 + * @param 数据类型 + * @return 成功响应对象 + */ + public static ResponseMessage successEmpty(String message) { + return new ResponseMessage<>(HttpStatus.OK.value(), message, null, true); + } + + // ----------------------------------- 错误响应方法 ----------------------------------- + + /** + * 创建错误响应,默认状态码500 + * @param message 错误消息 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage error(String message) { + return new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, null, false); + } + + /** + * 创建错误响应,自定义状态码 + * @param code 状态码 + * @param message 错误消息 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage error(Integer code, String message) { + return new ResponseMessage<>(code, message, null, false); + } + + /** + * 创建错误响应,包含错误数据 + * @param code 状态码 + * @param message 错误消息 + * @param data 错误数据 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage errorWithData(Integer code, String message, T data) { + return new ResponseMessage<>(code, message, data, false); + } + + /** + * 创建参数错误响应,状态码400 + * @param message 错误消息 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage badRequest(String message) { + return new ResponseMessage<>(HttpStatus.BAD_REQUEST.value(), message, null, false); + } + + /** + * 创建未找到资源响应,状态码404 + * @param message 错误消息 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage notFound(String message) { + return new ResponseMessage<>(HttpStatus.NOT_FOUND.value(), message, null, false); + } + + /** + * 创建权限错误响应,状态码403 + * @param message 错误消息 + * @param 数据类型 + * @return 错误响应对象 + */ + public static ResponseMessage forbidden(String message) { + return new ResponseMessage<>(HttpStatus.FORBIDDEN.value(), message, null, false); + } + + // ----------------------------------- 业务操作响应方法 ----------------------------------- + + /** + * 创建保存操作响应 + * @param success 是否成功 + * @param data 响应数据 + * @param 数据类型 + * @return 操作响应对象 + */ + public static ResponseMessage save(boolean success, T data) { + return success ? + new ResponseMessage<>(HttpStatus.OK.value(), "保存成功", data, true) : + new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "保存失败", null, false); + } + + /** + * 创建更新操作响应 + * @param success 是否成功 + * @param data 响应数据 + * @param 数据类型 + * @return 操作响应对象 + */ + public static ResponseMessage update(boolean success, T data) { + return success ? + new ResponseMessage<>(HttpStatus.OK.value(), "更新成功", data, true) : + new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "更新失败", null, false); + } + + /** + * 创建删除操作响应 + * @param success 是否成功 + * @param 数据类型 + * @return 操作响应对象 + */ + public static ResponseMessage delete(boolean success) { + return success ? + new ResponseMessage<>(HttpStatus.OK.value(), "删除成功", null, true) : + new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "删除失败", null, false); + } + + /** + * 创建批量删除操作响应 + * @param success 是否成功 + * @param deletedCount 删除的数量 + * @param 数据类型 + * @return 操作响应对象 + */ + public static ResponseMessage batchDelete(boolean success, int deletedCount) { + return success ? + new ResponseMessage<>(HttpStatus.OK.value(), "成功删除" + deletedCount + "条数据", null, true) : + new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "批量删除失败", null, false); + } + + /** + * 创建分页查询响应 + * @param data 分页数据 + * @param message 响应消息 + * @param 数据类型 + * @return 分页响应对象 + */ + public static ResponseMessage page(T data, String message) { + return new ResponseMessage<>(HttpStatus.OK.value(), message, data, true); + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + +} diff --git a/src/main/java/com/qf/myafterprojecy/config/SecurityConfig.java b/src/main/java/com/qf/myafterprojecy/config/SecurityConfig.java index 3952a6a..9b694ee 100644 --- a/src/main/java/com/qf/myafterprojecy/config/SecurityConfig.java +++ b/src/main/java/com/qf/myafterprojecy/config/SecurityConfig.java @@ -1,21 +1,47 @@ package com.qf.myafterprojecy.config; +import javax.ws.rs.HttpMethod; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; /** * Spring Security配置类 - * 用于关闭默认的登录验证功能 + * 配置权限管理功能 */ @Configuration @EnableWebSecurity +// 启用方法级别的安全控制 +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) public class SecurityConfig { + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private PasswordEncoder passwordEncoder; + /** - * 配置安全过滤器链,允许所有请求通过 + * 配置AuthenticationManager Bean + * 使用AuthenticationConfiguration来获取认证管理器,这是更现代的方式 + */ + @Bean + public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { + return authenticationConfiguration.getAuthenticationManager(); + } + + /** + * 配置安全过滤器链 * @param http HttpSecurity对象,用于配置HTTP安全策略 * @return 配置好的SecurityFilterChain对象 * @throws Exception 配置过程中可能出现的异常 @@ -25,16 +51,26 @@ public class SecurityConfig { http // 禁用CSRF保护(对于API服务通常不需要) .csrf().disable() - // 允许所有请求通过,不需要认证 + // 配置URL访问权限 .authorizeRequests() - .anyRequest().permitAll() + // 允许公开访问的路径 + // 公开get请求 + .antMatchers(HttpMethod.GET,"/api/auth/**").permitAll() + .antMatchers(HttpMethod.GET,"/api/help/**").permitAll() + .antMatchers(HttpMethod.GET,"/api/category-attributes/**").permitAll() + .antMatchers(HttpMethod.GET,"/api/markdowns/**").permitAll() + .antMatchers(HttpMethod.GET,"/api/articles/**").permitAll() + .antMatchers(HttpMethod.GET,"/api/messages/**").permitAll() + // 公开post请求 + .antMatchers(HttpMethod.POST,"/api/messages/**").permitAll() + // 管理员才能访问的路径 + .antMatchers("/api/admin/**").hasRole("ADMIN") + // 其他所有请求都需要认证 + .anyRequest().authenticated() .and() - // 禁用表单登录 - .formLogin().disable() - // 禁用HTTP基本认证 - .httpBasic().disable() - // 禁用会话管理(对于无状态API服务) - .sessionManagement().disable(); + // 配置会话管理,使用无状态会话 + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS); return http.build(); } diff --git a/src/main/java/com/qf/myafterprojecy/controller/ArticleController.java b/src/main/java/com/qf/myafterprojecy/controller/ArticleController.java index 8c37c58..39793f0 100644 --- a/src/main/java/com/qf/myafterprojecy/controller/ArticleController.java +++ b/src/main/java/com/qf/myafterprojecy/controller/ArticleController.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.controller; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Article; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.ArticleDto; import com.qf.myafterprojecy.service.imp.IArticleService; @@ -59,7 +59,7 @@ public class ArticleController { public ResponseMessage> getArticlesByTitle(@PathVariable String title) { return articleService.getArticlesByTitle(title); } - + /** * 根据属性ID获取该属性下的所有文章 * @param attributeId 属性ID diff --git a/src/main/java/com/qf/myafterprojecy/controller/AuthController.java b/src/main/java/com/qf/myafterprojecy/controller/AuthController.java new file mode 100644 index 0000000..4c4e650 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/controller/AuthController.java @@ -0,0 +1,125 @@ +package com.qf.myafterprojecy.controller; + +import com.qf.myafterprojecy.config.ResponseMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +/** + * 认证控制器 + * 处理用户登录相关请求 + */ +@RestController +@RequestMapping("/api/auth") +public class AuthController { + + private static final Logger logger = LoggerFactory.getLogger(AuthController.class); + + @Autowired + private AuthenticationManager authenticationManager; + + /** + * 用户登录请求体 + */ + static class LoginRequest { + private String username; + private String password; + + // getters and setters + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } + + /** + * 用户登录接口 + * @param loginRequest 登录请求参数 + * @return 登录结果 + */ + @PostMapping("/login") + public ResponseMessage> login(@RequestBody LoginRequest loginRequest) { + logger.info("用户登录请求: {}", loginRequest.getUsername()); + + try { + // 创建认证令牌 + UsernamePasswordAuthenticationToken authenticationToken = + new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()); + + // 执行认证 + Authentication authentication = authenticationManager.authenticate(authenticationToken); + + // 将认证信息存入上下文 + SecurityContextHolder.getContext().setAuthentication(authentication); + + // 获取认证后的用户信息 + UserDetails userDetails = (UserDetails) authentication.getPrincipal(); + + // 构建返回数据 + Map data = new HashMap<>(); + data.put("username", userDetails.getUsername()); + data.put("authorities", userDetails.getAuthorities()); + data.put("message", "登录成功"); + + return ResponseMessage.success(data, "登录成功"); + + } catch (AuthenticationException e) { + logger.error("登录失败: {}", e.getMessage()); + return ResponseMessage.error("用户名或密码错误"); + } + } + + /** + * 获取当前登录用户信息 + * @return 当前用户信息 + */ + @PostMapping("/info") + public ResponseMessage> getCurrentUserInfo() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if (authentication == null || !authentication.isAuthenticated()) { + return ResponseMessage.error("未登录"); + } + + UserDetails userDetails = (UserDetails) authentication.getPrincipal(); + Map data = new HashMap<>(); + data.put("username", userDetails.getUsername()); + data.put("authorities", userDetails.getAuthorities()); + + return ResponseMessage.success(data, "获取用户信息成功"); + } + + /** + * 用户登出接口 + * @return 登出结果 + */ + @PostMapping("/logout") + public ResponseMessage logout() { + SecurityContextHolder.clearContext(); + return ResponseMessage.successEmpty("登出成功"); + } +} diff --git a/src/main/java/com/qf/myafterprojecy/controller/CategoryAttributeController.java b/src/main/java/com/qf/myafterprojecy/controller/CategoryAttributeController.java index ccd6ea4..469ad52 100644 --- a/src/main/java/com/qf/myafterprojecy/controller/CategoryAttributeController.java +++ b/src/main/java/com/qf/myafterprojecy/controller/CategoryAttributeController.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.controller; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category_attribute; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryAttributeDto; import com.qf.myafterprojecy.service.imp.ICategoryAttributeService; diff --git a/src/main/java/com/qf/myafterprojecy/controller/CategoryController.java b/src/main/java/com/qf/myafterprojecy/controller/CategoryController.java index cb1f8e9..c8ade1e 100644 --- a/src/main/java/com/qf/myafterprojecy/controller/CategoryController.java +++ b/src/main/java/com/qf/myafterprojecy/controller/CategoryController.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.controller; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryDto; import com.qf.myafterprojecy.service.imp.ICategoryService; diff --git a/src/main/java/com/qf/myafterprojecy/controller/HelpController.java b/src/main/java/com/qf/myafterprojecy/controller/HelpController.java index 202b0a8..69f5783 100644 --- a/src/main/java/com/qf/myafterprojecy/controller/HelpController.java +++ b/src/main/java/com/qf/myafterprojecy/controller/HelpController.java @@ -1,6 +1,5 @@ package com.qf.myafterprojecy.controller; -import com.qf.myafterprojecy.pojo.ResponseMessage; import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; @@ -10,6 +9,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.qf.myafterprojecy.config.ResponseMessage; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -30,35 +31,31 @@ public class HelpController { @GetMapping public ResponseMessage getReadmeApi() { try { - // 获取README_API.md文件的绝对路径 - String readmePath = "e:\\MyWebProject\\MyAfterProjecy\\README_API.md"; - File readmeFile = new File(readmePath); + // 获取项目根目录 + String rootPath = System.getProperty("user.dir") ; + // 构建README_API.md文件路径 + File readmeFile = new File(rootPath, "README_API.md"); // 检查文件是否存在 - if (readmeFile.exists() && readmeFile.isFile()) { - // 读取文件内容 - String markdownContent = new String(FileCopyUtils.copyToByteArray(new FileInputStream(readmeFile)), StandardCharsets.UTF_8); - // 将Markdown转换为HTML - String htmlContent = convertMarkdownToHtml(markdownContent); - return ResponseMessage.success(htmlContent, "获取API文档成功"); + if (!readmeFile.exists() || !readmeFile.isFile()) { + // 如果不存在,尝试使用类路径资源加载 + try { + ClassPathResource resource = new ClassPathResource("README_API.md"); + String markdownContent = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()), StandardCharsets.UTF_8); + // 将Markdown转换为HTML + String htmlContent = convertMarkdownToHtml(markdownContent); + return ResponseMessage.success(htmlContent, "获取API文档成功"); + } catch (IOException e) { + return ResponseMessage.error("未找到README_API.md文件"); + } } - // 如果直接路径不存在,尝试从类路径加载 - try { - ClassPathResource resource = new ClassPathResource("README_API.md"); - String markdownContent = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()), StandardCharsets.UTF_8); - // 将Markdown转换为HTML - String htmlContent = convertMarkdownToHtml(markdownContent); - return ResponseMessage.success(htmlContent, "获取API文档成功"); - } catch (IOException e) { - // 记录详细错误信息以便调试 - System.err.println("无法从类路径加载README_API.md: " + e.getMessage()); - return ResponseMessage.error("未找到README_API.md文件"); - } - } catch (Exception e) { - // 捕获所有异常并记录详细错误信息 - System.err.println("处理README_API.md时出错: " + e.getMessage()); - e.printStackTrace(); + // 读取文件内容 + String markdownContent = new String(FileCopyUtils.copyToByteArray(new FileInputStream(readmeFile)), StandardCharsets.UTF_8); + // 将Markdown转换为HTML + // String htmlContent = convertMarkdownToHtml(markdownContent); + return ResponseMessage.success(markdownContent, "获取API文档成功"); + } catch (IOException e) { return ResponseMessage.error("读取README_API.md文件失败: " + e.getMessage()); } } diff --git a/src/main/java/com/qf/myafterprojecy/controller/MessageController.java b/src/main/java/com/qf/myafterprojecy/controller/MessageController.java index 2ea61ee..e548011 100644 --- a/src/main/java/com/qf/myafterprojecy/controller/MessageController.java +++ b/src/main/java/com/qf/myafterprojecy/controller/MessageController.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.controller; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Message; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.MessageDto; import com.qf.myafterprojecy.service.imp.IMessageService; diff --git a/src/main/java/com/qf/myafterprojecy/controller/UserController.java b/src/main/java/com/qf/myafterprojecy/controller/UserController.java new file mode 100644 index 0000000..9b42547 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/controller/UserController.java @@ -0,0 +1,134 @@ +package com.qf.myafterprojecy.controller; + +import com.qf.myafterprojecy.config.ResponseMessage; +import com.qf.myafterprojecy.pojo.Users; +import com.qf.myafterprojecy.pojo.dto.UserDto; +import com.qf.myafterprojecy.service.imp.IUserService; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping("/api/users") +public class UserController { + + private static final Logger logger = LoggerFactory.getLogger(UserController.class); + + @Autowired + private IUserService userService; + + /** + * 根据ID获取用户信息 + * @param id 用户ID + * @return 用户信息 + */ + @GetMapping("/{id}") + public ResponseMessage getUserById(@PathVariable Long id) { + logger.info("获取用户信息,用户ID: {}", id); + return userService.getUserById(id); + } + + /** + * 获取所有用户列表 + * @return 用户列表 + */ + @GetMapping + public ResponseMessage> getAllUsers() { + logger.info("获取所有用户列表"); + return userService.getAllUsers(); + } + + /** + * 根据用户名获取用户信息 + * @param username 用户名 + * @return 用户信息 + */ + @GetMapping("/username/{username}") + public ResponseMessage getUserByUsername(@PathVariable String username) { + logger.info("根据用户名获取用户信息,用户名: {}", username); + return userService.getUserByUsername(username); + } + + /** + * 创建新用户 + * @param userDto 用户数据 + * @return 创建结果 + */ + @PostMapping + public ResponseMessage saveUser(@Valid @RequestBody UserDto userDto) { + logger.info("创建新用户,用户名: {}", userDto.getUsername()); + return userService.saveUser(userDto); + } + + /** + * 更新用户信息 + * @param id 用户ID + * @param userDto 用户数据 + * @return 更新结果 + */ + @PutMapping("/{id}") + public ResponseMessage updateUser(@PathVariable Long id, @Valid @RequestBody UserDto userDto) { + logger.info("更新用户信息,用户ID: {}", id); + return userService.updateUser(id, userDto); + } + + /** + * 删除用户 + * @param id 用户ID + * @return 删除结果 + */ + @DeleteMapping("/{id}") + public ResponseMessage deleteUser(@PathVariable Long id) { + logger.info("删除用户,用户ID: {}", id); + return userService.deleteUser(id); + } + + /** + * 根据角色查询用户列表 + * @param role 角色 + * @return 用户列表 + */ + @GetMapping("/role/{role}") + public ResponseMessage> getUsersByRole(@PathVariable int role) { + logger.info("根据角色查询用户列表,角色: {}", role); + return userService.getUsersByRole(role); + } + + /** + * 检查用户名是否存在 + * @param username 用户名 + * @return 是否存在 + */ + @GetMapping("/check/username/{username}") + public ResponseMessage existsByUsername(@PathVariable String username) { + logger.info("检查用户名是否存在,用户名: {}", username); + return userService.existsByUsername(username); + } + + /** + * 检查邮箱是否存在 + * @param email 邮箱 + * @return 是否存在 + */ + @GetMapping("/check/email/{email}") + public ResponseMessage existsByEmail(@PathVariable String email) { + logger.info("检查邮箱是否存在,邮箱: {}", email); + return userService.existsByEmail(email); + } + + /** + * 检查手机号是否存在 + * @param phone 手机号 + * @return 是否存在 + */ + @GetMapping("/check/phone/{phone}") + public ResponseMessage existsByPhone(@PathVariable String phone) { + logger.info("检查手机号是否存在,手机号: {}", phone); + return userService.existsByPhone(phone); + } +} diff --git a/src/main/java/com/qf/myafterprojecy/pojo/Article.java b/src/main/java/com/qf/myafterprojecy/pojo/Article.java index 2e6bd36..55c9814 100644 --- a/src/main/java/com/qf/myafterprojecy/pojo/Article.java +++ b/src/main/java/com/qf/myafterprojecy/pojo/Article.java @@ -39,9 +39,14 @@ public class Article { @Column(name = "likes") private Integer likes; // 点赞数 + @Column(name = "status") private Integer status; // 0-草稿,1-已发布,2-已删除 + @Column(name = "markdownscontent") + @NotBlank(message = "Markdown内容不能为空") + private String markdownscontent; + // Getters and Setters public Integer getLikes() { @@ -125,4 +130,12 @@ public class Article { public void setViewCount(Integer viewCount) { this.viewCount = viewCount; } + + public String getMarkdownscontent() { + return markdownscontent; + } + + public void setMarkdownscontent(String markdownscontent) { + this.markdownscontent = markdownscontent; + } } diff --git a/src/main/java/com/qf/myafterprojecy/pojo/ResponseMessage.java b/src/main/java/com/qf/myafterprojecy/pojo/ResponseMessage.java deleted file mode 100644 index 6419dbf..0000000 --- a/src/main/java/com/qf/myafterprojecy/pojo/ResponseMessage.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.qf.myafterprojecy.pojo; - -import lombok.Data; -import org.springframework.http.HttpStatus; -/** - * 通用响应消息类,用于封装接口返回的数据结构 - * 使用泛型T来支持不同类型的数据返回 - * @param 数据类型,可以是任意Java对象 - */ -@Data -public class ResponseMessage { - // 状态码,通常用于表示请求的处理结果 - private Integer code; - // 响应消息,用于描述请求的处理结果信息 - private String message; - // 请求是否成功的标志 - private boolean success; - // 响应数据,泛型类型,支持不同类型的数据 - private T data; - /** - * 构造方法,用于创建响应消息对象 - * @param code 状态码 - * @param message 响应消息 - * @param data 响应数据 - */ - public ResponseMessage(Integer code, String message, T data) { - this.code = code; - this.message = message; - this.data = data; - } - - // 获取成功状态的getter方法 - public boolean isSuccess() { - return success; - } - - // 设置成功状态的setter方法 - public void setSuccess(boolean success) { - this.success = success; - } - - // 获取状态码的getter方法 - public Integer getCode() { - return code; - } - - // 设置状态码的setter方法 - public void setCode(Integer code) { - this.code = code; - } - - // 获取响应消息的getter方法 - public String getMessage() { - return message; - } - - // 设置响应消息的setter方法 - public void setMessage(String message) { - this.message = message; - } - - // 获取响应数据的getter方法 - public T getData() { - return data; - } - - // 设置响应数据的setter方法 - public void setData(T data) { - this.data = data; - } - /** - * 完整参数的构造方法 - * @param code 状态码 - * @param message 响应消息 - * @param data 响应数据 - * @param success 是否成功 - */ - public ResponseMessage(Integer code, String message, T data, boolean success) { - this.code = code; - this.message = message; - this.data = data; - this.success = success; - } - - // 接口请求成功 - public static ResponseMessage success(T data ,String message ,boolean success) { - return new ResponseMessage(HttpStatus.OK.value(), message, data ,success); - } - - /** - * 创建一个表示操作失败的响应消息 - * @param message 失败原因的描述信息 - * @return 返回一个包含错误状态码和错误信息的ResponseMessage对象 - */ - public static ResponseMessage failure(String message) { - return new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, null, false); - } - - - public static ResponseMessage success(T data) { - return new ResponseMessage<>(HttpStatus.OK.value(), "操作成功", data, true); - } - - public static ResponseMessage success(T data, String message) { - return new ResponseMessage<>(HttpStatus.OK.value(), message, data, true); - } - - public static ResponseMessage error(String message) { - return new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, null, false); - } - - public static ResponseMessage error(Integer code, String message) { - return new ResponseMessage<>(code, message, null, false); - } - - public static ResponseMessage Save(boolean success) { - return success ? - new ResponseMessage<>(HttpStatus.OK.value(), "保存成功", null, true) : - new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "保存失败", null, false); - } - - public static ResponseMessage Delete(boolean success) { - return success ? - new ResponseMessage<>(HttpStatus.OK.value(), "删除成功", null, true) : - new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "删除失败", null, false); - } - -} diff --git a/src/main/java/com/qf/myafterprojecy/pojo/Users.java b/src/main/java/com/qf/myafterprojecy/pojo/Users.java new file mode 100644 index 0000000..9403674 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/pojo/Users.java @@ -0,0 +1,89 @@ +package com.qf.myafterprojecy.pojo; + +import java.time.LocalDateTime; + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; + +@Entity +@Table(name = "users") +public class Users { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false, unique = true) + private Long id; + @NotBlank(message = "用户名不能为空") + @Column(name = "username", nullable = false, unique = true) + private String username; + @NotBlank(message = "密码不能为空") + @Column(name = "password", nullable = false) + private String password; + @NotBlank(message = "邮箱不能为空") + @Column(name = "email", nullable = false, unique = true) + private String email; + @NotBlank(message = "手机号不能为空") + @Column(name = "phone", nullable = false, unique = true) + private String phone; + @Column(name = "role", nullable = false) + private int role; + @Column(name = "create_time", nullable = false) + private LocalDateTime createTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public int getRole() { + return role; + } + + public void setRole(int role) { + this.role = role; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + +} diff --git a/src/main/java/com/qf/myafterprojecy/pojo/dto/MarkdownDto.java b/src/main/java/com/qf/myafterprojecy/pojo/dto/MarkdownDto.java new file mode 100644 index 0000000..0319070 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/pojo/dto/MarkdownDto.java @@ -0,0 +1,20 @@ +package com.qf.myafterprojecy.pojo.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class MarkdownDto { + @NotBlank(message = "Markdown内容不能为空") + private String markdownscontent; + + public String getMarkdownscontent() { + return markdownscontent; + } + + public void setMarkdownscontent(String markdownscontent) { + this.markdownscontent = markdownscontent; + } + +} diff --git a/src/main/java/com/qf/myafterprojecy/pojo/dto/UserDto.java b/src/main/java/com/qf/myafterprojecy/pojo/dto/UserDto.java new file mode 100644 index 0000000..f86976b --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/pojo/dto/UserDto.java @@ -0,0 +1,61 @@ +package com.qf.myafterprojecy.pojo.dto; + +import javax.validation.constraints.NotBlank; + +public class UserDto { + @NotBlank(message = "用户名不能为空") + private String username; + + @NotBlank(message = "密码不能为空") + private String password; + + @NotBlank(message = "邮箱不能为空") + private String email; + + @NotBlank(message = "手机号不能为空") + private String phone; + + @NotBlank(message = "角色不能为空") + private int role; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public int getRole() { + return role; + } + + public void setRole(int role) { + this.role = role; + } + +} diff --git a/src/main/java/com/qf/myafterprojecy/repository/UsersRepository.java b/src/main/java/com/qf/myafterprojecy/repository/UsersRepository.java new file mode 100644 index 0000000..b911538 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/repository/UsersRepository.java @@ -0,0 +1,63 @@ +package com.qf.myafterprojecy.repository; + +import com.qf.myafterprojecy.pojo.Users; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Optional; + +@Repository +public interface UsersRepository extends JpaRepository { + + /** + * 根据用户名查询用户信息 + * @param username 用户名 + * @return 返回符合条件的用户对象 + */ + Optional findByUsername(String username); + + /** + * 根据邮箱查询用户信息 + * @param email 邮箱 + * @return 返回符合条件的用户对象 + */ + Optional findByEmail(String email); + + /** + * 根据手机号查询用户信息 + * @param phone 手机号 + * @return 返回符合条件的用户对象 + */ + Optional findByPhone(String phone); + + /** + * 检查用户名是否存在 + * @param username 用户名 + * @return 返回是否存在 + */ + boolean existsByUsername(String username); + + /** + * 检查邮箱是否存在 + * @param email 邮箱 + * @return 返回是否存在 + */ + boolean existsByEmail(String email); + + /** + * 检查手机号是否存在 + * @param phone 手机号 + * @return 返回是否存在 + */ + boolean existsByPhone(String phone); + + /** + * 根据角色查询用户列表 + * @param role 角色 + * @return 用户列表 + */ + @Query("SELECT u FROM Users u WHERE u.role = :role") + java.util.List findByRole(@Param("role") int role); +} diff --git a/src/main/java/com/qf/myafterprojecy/runner/MessageDataChecker.java b/src/main/java/com/qf/myafterprojecy/runner/MessageDataChecker.java deleted file mode 100644 index 49a72dc..0000000 --- a/src/main/java/com/qf/myafterprojecy/runner/MessageDataChecker.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.qf.myafterprojecy.runner; - -import com.qf.myafterprojecy.pojo.Message; -import com.qf.myafterprojecy.pojo.ResponseMessage; -import com.qf.myafterprojecy.pojo.dto.MessageDto; -import com.qf.myafterprojecy.repository.MessageRepository; -import com.qf.myafterprojecy.service.imp.IMessageService; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -import java.util.Date; -import java.util.List; -import java.util.Optional; - -/** - * 消息数据检查器,用于验证消息相关的业务代码是否正常工作 - */ -@Component -public class MessageDataChecker implements CommandLineRunner { - - private static final Logger logger = LoggerFactory.getLogger(MessageDataChecker.class); - - @Autowired - private MessageRepository messageRepository; - - @Autowired - private IMessageService messageService; - - @Override - public void run(String... args) throws Exception { - logger.info("===== 消息数据检查器开始运行 ====="); - - // 检查数据库中是否已有消息数据 - long count = messageRepository.count(); - logger.info("当前数据库中消息数量: {}", count); - - // 如果没有消息数据,添加一些测试数据 - if (count == 0) { - logger.info("数据库中没有消息数据,开始添加测试数据..."); - addTestMessages(); - } - - // 测试查询方法 - testQueryMethods(); - - // 测试服务层方法 - testServiceMethods(); - - logger.info("===== 消息数据检查器运行结束 ====="); - } - - private void addTestMessages() { - // 添加第一篇文章的评论 - Message message1 = new Message(); - message1.setNickname("张三"); - message1.setEmail("zhangsan@example.com"); - message1.setContent("这是一篇很棒的文章!"); - message1.setCreatedAt(new Date()); - message1.setArticleid(1); - message1.setParentid(null); // 根评论 - message1.setLikes(0); // 设置点赞数初始值为0 - messageRepository.save(message1); - - // 添加回复 - Message reply1 = new Message(); - reply1.setNickname("李四"); - reply1.setEmail("lisi@example.com"); - reply1.setContent("同意你的观点!"); - reply1.setCreatedAt(new Date()); - reply1.setArticleid(1); - reply1.setParentid(message1.getMessageid()); // 回复第一篇评论 - reply1.setLikes(0); // 设置点赞数初始值为0 - messageRepository.save(reply1); - - // 添加第二篇文章的评论 - Message message2 = new Message(); - message2.setNickname("王五"); - message2.setEmail("wangwu@example.com"); - message2.setContent("学到了很多东西,谢谢分享!"); - message2.setCreatedAt(new Date()); - message2.setArticleid(2); - message2.setParentid(null); - message2.setLikes(0); // 设置点赞数初始值为0 - messageRepository.save(message2); - - logger.info("成功添加了{}条测试消息数据", messageRepository.count()); - } - - private void testQueryMethods() { - logger.info("===== 测试Repository查询方法 ====="); - - // 测试根据文章ID查询 - List article1Messages = messageRepository.findByArticleid(1); - logger.info("文章ID为1的消息数量: {}", article1Messages.size()); - - // 测试查询所有根消息 - List rootMessages = messageRepository.findByParentidIsNull(); - logger.info("根消息数量: {}", rootMessages.size()); - - // 测试根据昵称模糊查询 - List zhangMessages = messageRepository.findByNicknameContaining("张"); - logger.info("昵称包含'张'的消息数量: {}", zhangMessages.size()); - - // 测试统计文章评论数量 - Long article1Count = messageRepository.countByArticleId(1); - logger.info("文章ID为1的评论数量: {}", article1Count); - - // 如果有根消息,测试查询回复 - if (!rootMessages.isEmpty()) { - Integer firstRootId = rootMessages.get(0).getMessageid(); - List replies = messageRepository.findByParentid(firstRootId); - logger.info("消息ID为{}的回复数量: {}", firstRootId, replies.size()); - } - } - - private void testServiceMethods() { - logger.info("===== 测试Service层方法 ====="); - - // 测试获取所有消息 - ResponseMessage> allMessagesResponse = messageService.getAllMessages(); - logger.info("获取所有消息: 成功={}, 消息数量={}", allMessagesResponse.isSuccess(), - ((List)allMessagesResponse.getData()).size()); - - // 测试根据ID获取消息 - if (messageRepository.count() > 0) { - Message firstMessage = messageRepository.findAll().iterator().next(); - Integer messageId = firstMessage.getMessageid(); - ResponseMessage messageResponse = messageService.getMessageById(messageId); - logger.info("根据ID{}获取消息: 成功={}, 昵称={}", messageId, - messageResponse.isSuccess(), - messageResponse.getData() != null ? messageResponse.getData().getNickname() : "null"); - - // 测试获取指定文章的评论数量 - ResponseMessage countResponse = messageService.getMessageCountByArticleId(1); - logger.info("获取文章ID为1的评论数量: 成功={}, 数量={}", - countResponse.isSuccess(), countResponse.getData()); - - // 测试获取根消息 - ResponseMessage> rootResponse = messageService.getRootMessages(); - logger.info("获取根消息: 成功={}, 数量={}", - rootResponse.isSuccess(), - rootResponse.getData() != null ? rootResponse.getData().size() : 0); - } - - // 测试保存新消息 - MessageDto newMessage = new MessageDto(); - newMessage.setNickname("测试用户"); - newMessage.setEmail("test@example.com"); - newMessage.setContent("这是一条测试消息"); - newMessage.setArticleid(1); - newMessage.setParentid(null); - - ResponseMessage saveResponse = messageService.saveMessage(newMessage); - logger.info("保存新消息: 成功={}, 消息ID={}", - saveResponse.isSuccess(), - saveResponse.getData() != null ? saveResponse.getData().getMessageid() : "null"); - - // 如果保存成功,测试删除 - if (saveResponse.isSuccess() && saveResponse.getData() != null) { - Integer savedId = saveResponse.getData().getMessageid(); - ResponseMessage deleteResponse = messageService.deleteMessage(savedId); - logger.info("删除消息ID{}: 成功={}", savedId, deleteResponse.isSuccess()); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/qf/myafterprojecy/service/ArticleService.java b/src/main/java/com/qf/myafterprojecy/service/ArticleService.java index 174a6a4..3dbdbe1 100644 --- a/src/main/java/com/qf/myafterprojecy/service/ArticleService.java +++ b/src/main/java/com/qf/myafterprojecy/service/ArticleService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Article; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.ArticleDto; import com.qf.myafterprojecy.repository.ArticleRepository; import com.qf.myafterprojecy.repository.CategoryAttributeRepository; @@ -34,18 +34,25 @@ public class ArticleService implements IArticleService { public ResponseMessage

getArticleById(String id) { try { if (id == null || id.isEmpty()) { - return ResponseMessage.failure("文章ID不能为空"); + return ResponseMessage.badRequest("文章ID不能为空"); } Article article = articleRepository.findById(Integer.parseInt(id)) .orElseThrow(() -> new RuntimeException("文章不存在")); // 暂时不增加浏览次数,以避免事务问题 - // articleRepository.incrementViewCount(id); - - return ResponseMessage.success(article); + // articleRepository.incrementViewCount(Integer.parseInt(id)); + return ResponseMessage.success(article, "获取文章成功"); + } catch (NumberFormatException e) { + return ResponseMessage.badRequest("文章ID格式不正确"); + } catch (RuntimeException e) { + if (e.getMessage().contains("文章不存在")) { + return ResponseMessage.notFound("文章不存在"); + } + log.error("获取文章失败: {}", e.getMessage()); + return ResponseMessage.error("获取文章失败"); } catch (Exception e) { log.error("获取文章失败: {}", e.getMessage()); - return ResponseMessage.failure("获取文章失败"); + return ResponseMessage.error("获取文章失败"); } } /** @@ -57,10 +64,10 @@ public class ArticleService implements IArticleService { public ResponseMessage> getPublishedArticles() { try { List
articles = articleRepository.findByStatus(1); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "获取已发布文章列表成功"); } catch (Exception e) { log.error("获取已发布文章列表失败: {}", e.getMessage()); - return ResponseMessage.failure("获取已发布文章列表失败"); + return ResponseMessage.error("获取已发布文章列表失败"); } } @Override @@ -68,13 +75,13 @@ public class ArticleService implements IArticleService { public ResponseMessage> getArticlesByTitle(String title) { try { if (title == null || title.isEmpty()) { - return ResponseMessage.failure("文章标题不能为空"); + return ResponseMessage.badRequest("文章标题不能为空"); } List
articles = articleRepository.findByTitle(title); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "根据标题查询文章成功"); } catch (Exception e) { log.error("根据标题查询文章列表失败: {}", e.getMessage()); - return ResponseMessage.failure("根据标题查询文章列表失败"); + return ResponseMessage.error("根据标题查询文章列表失败"); } } @@ -83,10 +90,10 @@ public class ArticleService implements IArticleService { public ResponseMessage> getAllArticles() { try { List
articles = articleRepository.findAll(); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "获取文章列表成功"); } catch (DataAccessException e) { log.error("获取文章列表失败: {}", e.getMessage()); - return ResponseMessage.failure("获取文章列表失败"); + return ResponseMessage.error("获取文章列表失败"); } } @@ -102,10 +109,10 @@ public class ArticleService implements IArticleService { article.setStatus(articleDto.getStatus() != null ? articleDto.getStatus() : 0); Article savedArticle = articleRepository.save(article); - return ResponseMessage.success(savedArticle); + return ResponseMessage.save(true, savedArticle); } catch (DataAccessException e) { log.error("保存文章失败: {}", e.getMessage()); - return ResponseMessage.failure("保存文章失败"); + return ResponseMessage.error("保存文章失败"); } } @@ -120,10 +127,16 @@ public class ArticleService implements IArticleService { article.setUpdatedAt(LocalDateTime.now()); Article updatedArticle = articleRepository.save(article); - return ResponseMessage.success(updatedArticle); + return ResponseMessage.update(true, updatedArticle); + } catch (RuntimeException e) { + if (e.getMessage().contains("文章不存在")) { + return ResponseMessage.notFound("文章不存在"); + } + log.error("更新文章失败: {}", e.getMessage()); + return ResponseMessage.error("更新文章失败"); } catch (Exception e) { log.error("更新文章失败: {}", e.getMessage()); - return ResponseMessage.failure("更新文章失败"); + return ResponseMessage.error("更新文章失败"); } } @@ -138,10 +151,16 @@ public class ArticleService implements IArticleService { article.setUpdatedAt(LocalDateTime.now()); articleRepository.save(article); - return ResponseMessage.success(null); + return ResponseMessage.delete(true); + } catch (RuntimeException e) { + if (e.getMessage().contains("文章不存在")) { + return ResponseMessage.notFound("文章不存在"); + } + log.error("删除文章失败: {}", e.getMessage()); + return ResponseMessage.error("删除文章失败"); } catch (Exception e) { log.error("删除文章失败: {}", e.getMessage()); - return ResponseMessage.failure("删除文章失败"); + return ResponseMessage.error("删除文章失败"); } } @@ -153,10 +172,10 @@ public class ArticleService implements IArticleService { // 旧接口使用typeid,但我们现在用attributeid // 可以考虑查询该分类下的所有属性,然后获取相关文章 log.warn("使用了旧接口getArticlesByCategory,请考虑迁移到getArticlesByAttribute"); - return ResponseMessage.success(articleRepository.findPublishedByAttribute(categoryId)); + return ResponseMessage.success(articleRepository.findPublishedByAttribute(categoryId), "获取分类文章成功"); } catch (DataAccessException e) { log.error("获取分类文章失败: {}", e.getMessage()); - return ResponseMessage.failure("获取分类文章失败"); + return ResponseMessage.error("获取分类文章失败"); } } @@ -165,19 +184,19 @@ public class ArticleService implements IArticleService { public ResponseMessage> getArticlesByAttribute(Integer attributeid) { try { if (attributeid == null || attributeid <= 0) { - return ResponseMessage.failure("属性ID无效"); + return ResponseMessage.badRequest("属性ID无效"); } // 验证属性是否存在 if (!categoryAttributeRepository.existsById(attributeid)) { - return ResponseMessage.failure("属性不存在"); + return ResponseMessage.notFound("属性不存在"); } List
articles = articleRepository.findPublishedByAttribute(attributeid); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "获取属性文章成功"); } catch (DataAccessException e) { log.error("获取属性文章失败: {}", e.getMessage()); - return ResponseMessage.failure("获取属性文章失败"); + return ResponseMessage.error("获取属性文章失败"); } } @@ -196,10 +215,16 @@ public class ArticleService implements IArticleService { articleRepository.incrementViewCount(id); - return ResponseMessage.success(article); + return ResponseMessage.success(article, "增加文章浏览量成功"); + } catch (RuntimeException e) { + if (e.getMessage().contains("文章不存在")) { + return ResponseMessage.notFound("文章不存在"); + } + log.error("增加文章浏览量失败: {}", e.getMessage()); + return ResponseMessage.error("增加文章浏览量失败"); } catch (Exception e) { log.error("增加文章浏览量失败: {}", e.getMessage()); - return ResponseMessage.failure("增加文章浏览量失败"); + return ResponseMessage.error("增加文章浏览量失败"); } } @@ -208,19 +233,19 @@ public class ArticleService implements IArticleService { public ResponseMessage> getLatestArticlesByAttribute(Integer attributeid) { try { if (attributeid == null || attributeid <= 0) { - return ResponseMessage.failure("属性ID无效"); + return ResponseMessage.badRequest("属性ID无效"); } // 验证属性是否存在 if (!categoryAttributeRepository.existsById(attributeid)) { - return ResponseMessage.failure("属性不存在"); + return ResponseMessage.notFound("属性不存在"); } List
articles = articleRepository.findLatestByAttribute(attributeid); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "获取最新属性文章成功"); } catch (DataAccessException e) { log.error("获取最新属性文章失败: {}", e.getMessage()); - return ResponseMessage.failure("获取最新属性文章失败"); + return ResponseMessage.error("获取最新属性文章失败"); } } @@ -229,10 +254,10 @@ public class ArticleService implements IArticleService { public ResponseMessage> getMostViewedArticles() { try { List
articles = articleRepository.findMostViewed(); - return ResponseMessage.success(articles); + return ResponseMessage.success(articles, "获取热门文章成功"); } catch (DataAccessException e) { log.error("获取热门文章失败: {}", e.getMessage()); - return ResponseMessage.failure("获取热门文章失败"); + return ResponseMessage.error("获取热门文章失败"); } } } diff --git a/src/main/java/com/qf/myafterprojecy/service/CategoryAttributeService.java b/src/main/java/com/qf/myafterprojecy/service/CategoryAttributeService.java index eebe780..7843ec4 100644 --- a/src/main/java/com/qf/myafterprojecy/service/CategoryAttributeService.java +++ b/src/main/java/com/qf/myafterprojecy/service/CategoryAttributeService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category_attribute; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryAttributeDto; import com.qf.myafterprojecy.repository.CategoryAttributeRepository; import com.qf.myafterprojecy.service.imp.ICategoryAttributeService; @@ -29,16 +29,22 @@ public class CategoryAttributeService implements ICategoryAttributeService { public ResponseMessage getCategoryAttributeById(Integer id) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("属性ID无效"); + return ResponseMessage.badRequest("属性ID无效"); } Category_attribute attribute = categoryAttributeRepository.findById(id) .orElseThrow(() -> new RuntimeException("分类属性不存在")); - return ResponseMessage.success(attribute); + return ResponseMessage.success(attribute, "获取分类属性成功"); + } catch (RuntimeException e) { + if (e.getMessage().contains("分类属性不存在")) { + return ResponseMessage.notFound("分类属性不存在"); + } + log.error("获取分类属性失败: {}", e.getMessage()); + return ResponseMessage.error("获取分类属性失败"); } catch (Exception e) { log.error("获取分类属性失败: {}", e.getMessage()); - return ResponseMessage.failure("获取分类属性失败"); + return ResponseMessage.error("获取分类属性失败"); } } @@ -47,14 +53,14 @@ public class CategoryAttributeService implements ICategoryAttributeService { public ResponseMessage> getAttributesByCategoryId(Integer categoryId) { try { if (categoryId == null || categoryId <= 0) { - return ResponseMessage.failure("分类ID无效"); + return ResponseMessage.badRequest("分类ID无效"); } List attributes = categoryAttributeRepository.findByCategoryId(categoryId); - return ResponseMessage.success(attributes); + return ResponseMessage.success(attributes, "获取分类属性列表成功"); } catch (DataAccessException e) { log.error("获取分类属性列表失败: {}", e.getMessage()); - return ResponseMessage.failure("获取分类属性列表失败"); + return ResponseMessage.error("获取分类属性列表失败"); } } @@ -65,7 +71,7 @@ public class CategoryAttributeService implements ICategoryAttributeService { // 检查属性名称是否已存在于该分类下 if (categoryAttributeRepository.existsByCategoryidAndAttributename( dto.getCategoryid(), dto.getAttributename())) { - return ResponseMessage.failure("该分类下已存在同名属性"); + return ResponseMessage.badRequest("该分类下已存在同名属性"); } Category_attribute attribute = new Category_attribute(); @@ -75,10 +81,10 @@ public class CategoryAttributeService implements ICategoryAttributeService { log.info("成功创建分类属性: {}, 分类ID: {}", savedAttribute.getAttributename(), savedAttribute.getCategoryid()); - return ResponseMessage.success(savedAttribute); + return ResponseMessage.save(true, savedAttribute); } catch (DataAccessException e) { log.error("保存分类属性失败: {}", e.getMessage()); - return ResponseMessage.failure("保存分类属性失败"); + return ResponseMessage.error("保存分类属性失败"); } } @@ -87,7 +93,7 @@ public class CategoryAttributeService implements ICategoryAttributeService { public ResponseMessage updateCategoryAttribute(Integer id, CategoryAttributeDto dto) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("属性ID无效"); + return ResponseMessage.badRequest("属性ID无效"); } Category_attribute attribute = categoryAttributeRepository.findById(id) @@ -97,7 +103,7 @@ public class CategoryAttributeService implements ICategoryAttributeService { if (!attribute.getAttributename().equals(dto.getAttributename()) && categoryAttributeRepository.existsByCategoryidAndAttributename( dto.getCategoryid(), dto.getAttributename())) { - return ResponseMessage.failure("该分类下已存在同名属性"); + return ResponseMessage.badRequest("该分类下已存在同名属性"); } BeanUtils.copyProperties(dto, attribute); @@ -107,10 +113,16 @@ public class CategoryAttributeService implements ICategoryAttributeService { log.info("成功更新分类属性: ID={}, 名称={}", updatedAttribute.getAttributeid(), updatedAttribute.getAttributename()); - return ResponseMessage.success(updatedAttribute); + return ResponseMessage.update(true, updatedAttribute); + } catch (RuntimeException e) { + if (e.getMessage().contains("分类属性不存在")) { + return ResponseMessage.notFound("分类属性不存在"); + } + log.error("更新分类属性失败: {}", e.getMessage()); + return ResponseMessage.error("更新分类属性失败"); } catch (Exception e) { log.error("更新分类属性失败: {}", e.getMessage()); - return ResponseMessage.failure("更新分类属性失败"); + return ResponseMessage.error("更新分类属性失败"); } } @@ -119,20 +131,20 @@ public class CategoryAttributeService implements ICategoryAttributeService { public ResponseMessage deleteCategoryAttribute(Integer id) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("属性ID无效"); + return ResponseMessage.badRequest("属性ID无效"); } if (!categoryAttributeRepository.existsById(id)) { - return ResponseMessage.failure("分类属性不存在"); + return ResponseMessage.notFound("分类属性不存在"); } categoryAttributeRepository.deleteById(id); log.info("成功删除分类属性: ID={}", id); - return ResponseMessage.success(true); + return ResponseMessage.delete(true); } catch (Exception e) { log.error("删除分类属性失败: {}", e.getMessage()); - return ResponseMessage.failure("删除分类属性失败"); + return ResponseMessage.error("删除分类属性失败"); } } @@ -141,16 +153,16 @@ public class CategoryAttributeService implements ICategoryAttributeService { public ResponseMessage existsByCategoryAndName(Integer categoryId, String attributeName) { try { if (categoryId == null || categoryId <= 0 || attributeName == null || attributeName.isEmpty()) { - return ResponseMessage.failure("参数无效"); + return ResponseMessage.badRequest("参数无效"); } boolean exists = categoryAttributeRepository.existsByCategoryidAndAttributename( categoryId, attributeName); - return ResponseMessage.success(exists); + return ResponseMessage.success(exists, "检查分类属性成功"); } catch (DataAccessException e) { log.error("检查分类属性是否存在失败: {}", e.getMessage()); - return ResponseMessage.failure("检查分类属性是否存在失败"); + return ResponseMessage.error("检查分类属性是否存在失败"); } } } \ No newline at end of file diff --git a/src/main/java/com/qf/myafterprojecy/service/CategoryService.java b/src/main/java/com/qf/myafterprojecy/service/CategoryService.java index 4b5a906..db3790f 100644 --- a/src/main/java/com/qf/myafterprojecy/service/CategoryService.java +++ b/src/main/java/com/qf/myafterprojecy/service/CategoryService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryDto; import com.qf.myafterprojecy.repository.CategoryRepository; import com.qf.myafterprojecy.service.imp.ICategoryService; @@ -30,14 +30,20 @@ public class CategoryService implements ICategoryService { public ResponseMessage getCategoryById(Integer id) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("分类ID无效"); + return ResponseMessage.badRequest("分类ID无效"); } Category category = categoryRepository.findById(id) .orElseThrow(() -> new RuntimeException("分类不存在")); - return ResponseMessage.success(category); + return ResponseMessage.success(category, "获取分类成功"); + } catch (RuntimeException e) { + if (e.getMessage().contains("分类不存在")) { + return ResponseMessage.notFound("分类不存在"); + } + log.error("获取分类失败: {}", e.getMessage()); + return ResponseMessage.error("获取分类失败"); } catch (Exception e) { log.error("获取分类失败: {}", e.getMessage()); - return ResponseMessage.failure("获取分类失败"); + return ResponseMessage.error("获取分类失败"); } } @@ -46,10 +52,10 @@ public class CategoryService implements ICategoryService { public ResponseMessage> getAllCategories() { try { List categories = categoryRepository.findAll(); - return ResponseMessage.success(categories); + return ResponseMessage.success(categories, "获取分类列表成功"); } catch (DataAccessException e) { log.error("获取分类列表失败: {}", e.getMessage()); - return ResponseMessage.failure("获取分类列表失败"); + return ResponseMessage.error("获取分类列表失败"); } } @@ -59,7 +65,7 @@ public class CategoryService implements ICategoryService { try { // 检查分类名称是否已存在 if (categoryRepository.existsByTypename(categoryDto.getTypename())) { - return ResponseMessage.failure("分类名称已存在"); + return ResponseMessage.badRequest( "分类名称已存在"); } Category category = new Category(); @@ -68,10 +74,10 @@ public class CategoryService implements ICategoryService { category.setUpdatedAt(LocalDateTime.now()); Category savedCategory = categoryRepository.save(category); - return ResponseMessage.success(savedCategory); + return ResponseMessage.save(true, savedCategory); } catch (DataAccessException e) { log.error("保存分类失败: {}", e.getMessage()); - return ResponseMessage.failure("保存分类失败"); + return ResponseMessage.error("保存分类失败"); } } @@ -80,7 +86,7 @@ public class CategoryService implements ICategoryService { public ResponseMessage updateCategory(Integer id, CategoryDto categoryDto) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("分类ID无效"); + return ResponseMessage.badRequest("分类ID无效"); } Category category = categoryRepository.findById(id) @@ -89,17 +95,23 @@ public class CategoryService implements ICategoryService { // 如果修改了分类名称,检查新名称是否已存在 if (!category.getTypename().equals(categoryDto.getTypename()) && categoryRepository.existsByTypename(categoryDto.getTypename())) { - return ResponseMessage.failure("分类名称已存在"); + return ResponseMessage.badRequest("分类名称已存在"); } BeanUtils.copyProperties(categoryDto, category); category.setUpdatedAt(LocalDateTime.now()); Category updatedCategory = categoryRepository.save(category); - return ResponseMessage.success(updatedCategory); + return ResponseMessage.update(true, updatedCategory); + } catch (RuntimeException e) { + if (e.getMessage().contains("分类不存在")) { + return ResponseMessage.notFound("分类不存在"); + } + log.error("更新分类失败: {}", e.getMessage()); + return ResponseMessage.error("更新分类失败"); } catch (Exception e) { log.error("更新分类失败: {}", e.getMessage()); - return ResponseMessage.failure("更新分类失败"); + return ResponseMessage.error("更新分类失败"); } } @@ -108,20 +120,20 @@ public class CategoryService implements ICategoryService { public ResponseMessage deleteCategory(Integer id) { try { if (id == null || id <= 0) { - return ResponseMessage.failure("分类ID无效"); + return ResponseMessage.badRequest("分类ID无效"); } if (!categoryRepository.existsById(id)) { - return ResponseMessage.failure("分类不存在"); + return ResponseMessage.notFound("分类不存在"); } // 注意:实际项目中可能需要先检查是否有文章引用该分类 // 如果有,可能需要先处理文章或者禁止删除 categoryRepository.deleteById(id); - return ResponseMessage.success(true); + return ResponseMessage.delete(true); } catch (Exception e) { log.error("删除分类失败: {}", e.getMessage()); - return ResponseMessage.failure("删除分类失败"); + return ResponseMessage.error("删除分类失败"); } } @@ -130,14 +142,14 @@ public class CategoryService implements ICategoryService { public ResponseMessage> searchCategoriesByTypename(String typename) { try { if (typename == null || typename.trim().isEmpty()) { - return ResponseMessage.failure("分类名称不能为空"); + return ResponseMessage.badRequest("分类名称不能为空"); } List categories = categoryRepository.findByTypenameContaining(typename); - return ResponseMessage.success(categories); + return ResponseMessage.success(categories, "搜索分类成功"); } catch (DataAccessException e) { log.error("搜索分类失败: {}", e.getMessage()); - return ResponseMessage.failure("搜索分类失败"); + return ResponseMessage.error("搜索分类失败"); } } } \ No newline at end of file diff --git a/src/main/java/com/qf/myafterprojecy/service/MessageService.java b/src/main/java/com/qf/myafterprojecy/service/MessageService.java index 55e4865..8d5e1bd 100644 --- a/src/main/java/com/qf/myafterprojecy/service/MessageService.java +++ b/src/main/java/com/qf/myafterprojecy/service/MessageService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Message; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.MessageDto; import com.qf.myafterprojecy.repository.MessageRepository; import com.qf.myafterprojecy.service.imp.IMessageService; @@ -33,10 +33,10 @@ public class MessageService implements IMessageService { try { logger.info("查询所有消息"); Iterable messages = messageRepository.findAll(); - return ResponseMessage.success(messages, "查询成功", true); + return ResponseMessage.success(messages, "查询成功"); } catch (DataAccessException e) { logger.error("查询所有消息失败", e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -44,21 +44,21 @@ public class MessageService implements IMessageService { public ResponseMessage getMessageById(Integer id) { if (id == null || id <= 0) { logger.warn("获取消息时ID无效: {}", id); - return ResponseMessage.failure("消息ID无效"); + return ResponseMessage.badRequest("消息ID无效"); } try { logger.info("根据ID查询消息: {}", id); Optional messageOptional = messageRepository.findById(id); if (messageOptional.isPresent()) { - return ResponseMessage.success(messageOptional.get(), "查询成功", true); + return ResponseMessage.success(messageOptional.get(), "查询成功"); } else { logger.warn("未找到ID为{}的消息", id); - return ResponseMessage.failure("未找到指定消息"); + return ResponseMessage.notFound("未找到指定消息"); } } catch (DataAccessException e) { logger.error("查询消息失败: {}", id, e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -94,16 +94,15 @@ public class MessageService implements IMessageService { if (messageDto.getParentid() != null && messageDto.getParentid() > 0) { if (!messageRepository.existsById(messageDto.getParentid())) { logger.warn("回复的父消息不存在: {}", messageDto.getParentid()); - return ResponseMessage.failure("回复的父消息不存在"); + return ResponseMessage.notFound("回复的父消息不存在"); } } - Message savedMessage = messageRepository.save(message); logger.info("消息保存成功: {}", savedMessage.getMessageid()); - return ResponseMessage.success(savedMessage, "保存成功", true); + return ResponseMessage.save(true, savedMessage); } catch (DataAccessException e) { logger.error("保存消息失败", e); - return ResponseMessage.failure("保存消息失败:" + e.getMessage()); + return ResponseMessage.error("保存消息失败:" + e.getMessage()); } } @@ -112,7 +111,7 @@ public class MessageService implements IMessageService { public ResponseMessage deleteMessage(Integer id) { if (id == null || id <= 0) { logger.warn("删除消息时ID无效: {}", id); - return ResponseMessage.failure("消息ID无效"); + return ResponseMessage.badRequest("消息ID无效"); } try { @@ -126,14 +125,14 @@ public class MessageService implements IMessageService { logger.info("同时删除了{}条回复消息", replies.size()); } logger.info("消息删除成功: {}", id); - return ResponseMessage.success(null, "删除成功", true); + return ResponseMessage.delete(true); } else { logger.warn("未找到要删除的消息: {}", id); - return ResponseMessage.failure("未找到要删除的消息"); + return ResponseMessage.notFound("未找到要删除的消息"); } } catch (DataAccessException e) { logger.error("删除消息失败: {}", id, e); - return ResponseMessage.failure("删除消息失败:" + e.getMessage()); + return ResponseMessage.error("删除消息失败:" + e.getMessage()); } } @@ -141,16 +140,16 @@ public class MessageService implements IMessageService { public ResponseMessage> getMessagesByArticleId(Integer articleId) { if (articleId == null || articleId <= 0) { logger.warn("根据文章ID查询消息时ID无效: {}", articleId); - return ResponseMessage.failure("文章ID无效"); + return ResponseMessage.badRequest("文章ID无效"); } try { logger.info("根据文章ID查询消息: {}", articleId); List messages = messageRepository.findByArticleid(articleId); - return ResponseMessage.success(messages, "查询成功", true); + return ResponseMessage.success(messages, "查询成功"); } catch (DataAccessException e) { logger.error("根据文章ID查询消息失败: {}", articleId, e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -159,10 +158,10 @@ public class MessageService implements IMessageService { try { logger.info("查询所有根消息"); List messages = messageRepository.findByParentidIsNull(); - return ResponseMessage.success(messages, "查询成功", true); + return ResponseMessage.success(messages, "查询成功"); } catch (DataAccessException e) { logger.error("查询根消息失败", e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -170,15 +169,15 @@ public class MessageService implements IMessageService { public ResponseMessage> getRepliesByParentId(Integer parentId) { if (parentId == null || parentId <= 0) { logger.warn("根据父消息ID查询回复时ID无效: {}", parentId); - return ResponseMessage.failure("父消息ID无效"); + return ResponseMessage.badRequest("父消息ID无效"); } try { logger.info("根据父消息ID查询回复: {}", parentId); List replies = messageRepository.findByParentid(parentId); - return ResponseMessage.success(replies, "查询成功", true); + return ResponseMessage.success(replies, "查询成功"); } catch (DataAccessException e) { logger.error("查询回复消息失败: {}", parentId, e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -188,16 +187,16 @@ public class MessageService implements IMessageService { public ResponseMessage likeMessage(Integer id) { if (id == null || id <= 0) { logger.warn("点赞消息时ID无效: {}", id); - return ResponseMessage.failure("消息ID无效"); + return ResponseMessage.badRequest("消息ID无效"); } try { logger.info("点赞消息: {}", id); messageRepository.incrementLikes(id); Message likedMessage = messageRepository.findById(id).orElse(null); - return ResponseMessage.success(likedMessage, "点赞成功", true); + return ResponseMessage.success(likedMessage, "点赞成功"); } catch (DataAccessException e) { logger.error("点赞消息失败: {}", id, e); - return ResponseMessage.failure("点赞消息失败:" + e.getMessage()); + return ResponseMessage.error("点赞消息失败:" + e.getMessage()); } } @@ -205,16 +204,16 @@ public class MessageService implements IMessageService { public ResponseMessage> searchMessagesByNickname(String nickname) { if (StringUtils.isEmpty(nickname)) { logger.warn("根据昵称查询消息时昵称为空"); - return ResponseMessage.failure("昵称不能为空"); + return ResponseMessage.badRequest("昵称不能为空"); } try { logger.info("根据昵称查询消息: {}", nickname); List messages = messageRepository.findByNicknameContaining(nickname); - return ResponseMessage.success(messages, "查询成功", true); + return ResponseMessage.success(messages, "查询成功"); } catch (DataAccessException e) { logger.error("根据昵称查询消息失败: {}", nickname, e); - return ResponseMessage.failure("查询消息失败:" + e.getMessage()); + return ResponseMessage.error("查询消息失败:" + e.getMessage()); } } @@ -225,10 +224,10 @@ public class MessageService implements IMessageService { try { logger.info("删除所有消息"); messageRepository.deleteAll(); - return ResponseMessage.success(null, "删除成功", true); + return ResponseMessage.delete(true); } catch (DataAccessException e) { logger.error("删除所有消息失败", e); - return ResponseMessage.failure("删除消息失败:" + e.getMessage()); + return ResponseMessage.error("删除消息失败:" + e.getMessage()); } } @@ -236,16 +235,16 @@ public class MessageService implements IMessageService { public ResponseMessage getMessageCountByArticleId(Integer articleId) { if (articleId == null || articleId <= 0) { logger.warn("获取文章评论数量时ID无效: {}", articleId); - return ResponseMessage.failure("文章ID无效"); + return ResponseMessage.badRequest("文章ID无效"); } try { logger.info("获取文章评论数量: {}", articleId); Long count = messageRepository.countByArticleId(articleId); - return ResponseMessage.success(count, "查询成功", true); + return ResponseMessage.success(count, "查询成功"); } catch (DataAccessException e) { logger.error("获取文章评论数量失败: {}", articleId, e); - return ResponseMessage.failure("查询评论数量失败:" + e.getMessage()); + return ResponseMessage.error("查询评论数量失败:" + e.getMessage()); } } } diff --git a/src/main/java/com/qf/myafterprojecy/service/UserService.java b/src/main/java/com/qf/myafterprojecy/service/UserService.java new file mode 100644 index 0000000..de534a0 --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/service/UserService.java @@ -0,0 +1,236 @@ +package com.qf.myafterprojecy.service; + +import com.qf.myafterprojecy.config.ResponseMessage; +import com.qf.myafterprojecy.pojo.Users; +import com.qf.myafterprojecy.pojo.dto.UserDto; +import com.qf.myafterprojecy.repository.UsersRepository; +import com.qf.myafterprojecy.service.imp.IUserService; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; + +@Service +public class UserService implements IUserService { + + private static final Logger logger = LoggerFactory.getLogger(UserService.class); + + @Autowired + private UsersRepository usersRepository; + + @Autowired + private PasswordEncoder passwordEncoder; + + @Override + public ResponseMessage getUserById(Long id) { + try { + Optional userOptional = usersRepository.findById(id); + if (userOptional.isPresent()) { + return ResponseMessage.success(userOptional.get(), "获取用户成功"); + } else { + return ResponseMessage.notFound("用户不存在"); + } + } catch (DataAccessException e) { + logger.error("获取用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("获取用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage> getAllUsers() { + try { + List users = usersRepository.findAll(); + return ResponseMessage.success(users, "获取所有用户成功"); + } catch (DataAccessException e) { + logger.error("获取所有用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("获取所有用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage getUserByUsername(String username) { + try { + Optional userOptional = usersRepository.findByUsername(username); + if (userOptional.isPresent()) { + return ResponseMessage.success(userOptional.get(), "获取用户成功"); + } else { + return ResponseMessage.notFound("用户不存在"); + } + } catch (DataAccessException e) { + logger.error("根据用户名获取用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("根据用户名获取用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Transactional + @Override + public ResponseMessage saveUser(UserDto userDto) { + try { + // 检查用户名是否已存在 + if (usersRepository.existsByUsername(userDto.getUsername())) { + return ResponseMessage.badRequest("用户名已存在"); + } + + // 检查邮箱是否已存在 + if (usersRepository.existsByEmail(userDto.getEmail())) { + return ResponseMessage.badRequest("邮箱已存在"); + } + + // 检查手机号是否已存在 + if (usersRepository.existsByPhone(userDto.getPhone())) { + return ResponseMessage.badRequest("手机号已存在"); + } + + // 创建新用户 + Users user = new Users(); + BeanUtils.copyProperties(userDto, user); + // 使用密码编码器加密密码 + user.setPassword(passwordEncoder.encode(user.getPassword())); + user.setCreateTime(LocalDateTime.now()); + + // 保存用户 + Users savedUser = usersRepository.save(user); + return ResponseMessage.save(true, savedUser); + } catch (DataAccessException e) { + logger.error("保存用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("保存用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Transactional + @Override + public ResponseMessage updateUser(Long id, UserDto userDto) { + try { + Optional userOptional = usersRepository.findById(id); + if (!userOptional.isPresent()) { + return ResponseMessage.notFound("用户不存在"); + } + + Users user = userOptional.get(); + + // 检查用户名是否被其他用户使用 + if (!user.getUsername().equals(userDto.getUsername()) && usersRepository.existsByUsername(userDto.getUsername())) { + return ResponseMessage.badRequest("用户名已存在"); + } + + // 检查邮箱是否被其他用户使用 + if (!user.getEmail().equals(userDto.getEmail()) && usersRepository.existsByEmail(userDto.getEmail())) { + return ResponseMessage.badRequest("邮箱已存在"); + } + + // 检查手机号是否被其他用户使用 + if (!user.getPhone().equals(userDto.getPhone()) && usersRepository.existsByPhone(userDto.getPhone())) { + return ResponseMessage.badRequest("手机号已存在"); + } + + // 更新用户信息 + BeanUtils.copyProperties(userDto, user); + + // 保存更新后的用户 + Users updatedUser = usersRepository.save(user); + return ResponseMessage.update(true, updatedUser); + } catch (DataAccessException e) { + logger.error("更新用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("更新用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Transactional + @Override + public ResponseMessage deleteUser(Long id) { + try { + if (!usersRepository.existsById(id)) { + return ResponseMessage.notFound("用户不存在"); + } + + usersRepository.deleteById(id); + return ResponseMessage.delete(true); + } catch (DataAccessException e) { + logger.error("删除用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("删除用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage> getUsersByRole(int role) { + try { + List users = usersRepository.findByRole(role); + return ResponseMessage.success(users, "根据角色获取用户成功"); + } catch (DataAccessException e) { + logger.error("根据角色获取用户异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("根据角色获取用户未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage existsByUsername(String username) { + try { + boolean exists = usersRepository.existsByUsername(username); + return ResponseMessage.success(exists, "查询成功"); + } catch (DataAccessException e) { + logger.error("检查用户名存在性异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("检查用户名存在性未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage existsByEmail(String email) { + try { + boolean exists = usersRepository.existsByEmail(email); + return ResponseMessage.success(exists, "查询成功"); + } catch (DataAccessException e) { + logger.error("检查邮箱存在性异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("检查邮箱存在性未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } + + @Override + public ResponseMessage existsByPhone(String phone) { + try { + boolean exists = usersRepository.existsByPhone(phone); + return ResponseMessage.success(exists, "查询成功"); + } catch (DataAccessException e) { + logger.error("检查手机号存在性异常: {}", e.getMessage()); + return ResponseMessage.error("数据库访问异常"); + } catch (Exception e) { + logger.error("检查手机号存在性未知异常: {}", e.getMessage()); + return ResponseMessage.error("服务器异常"); + } + } +} diff --git a/src/main/java/com/qf/myafterprojecy/service/imp/IArticleService.java b/src/main/java/com/qf/myafterprojecy/service/imp/IArticleService.java index 75c2fac..619c025 100644 --- a/src/main/java/com/qf/myafterprojecy/service/imp/IArticleService.java +++ b/src/main/java/com/qf/myafterprojecy/service/imp/IArticleService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service.imp; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Article; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.ArticleDto; import java.util.List; diff --git a/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryAttributeService.java b/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryAttributeService.java index be8471f..09914a8 100644 --- a/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryAttributeService.java +++ b/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryAttributeService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service.imp; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category_attribute; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryAttributeDto; import java.util.List; diff --git a/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryService.java b/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryService.java index 94c9a34..dd978cc 100644 --- a/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryService.java +++ b/src/main/java/com/qf/myafterprojecy/service/imp/ICategoryService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service.imp; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Category; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.CategoryDto; import java.util.List; diff --git a/src/main/java/com/qf/myafterprojecy/service/imp/IMessageService.java b/src/main/java/com/qf/myafterprojecy/service/imp/IMessageService.java index 50dd909..1d2d0d1 100644 --- a/src/main/java/com/qf/myafterprojecy/service/imp/IMessageService.java +++ b/src/main/java/com/qf/myafterprojecy/service/imp/IMessageService.java @@ -1,7 +1,7 @@ package com.qf.myafterprojecy.service.imp; +import com.qf.myafterprojecy.config.ResponseMessage; import com.qf.myafterprojecy.pojo.Message; -import com.qf.myafterprojecy.pojo.ResponseMessage; import com.qf.myafterprojecy.pojo.dto.MessageDto; import java.util.List; diff --git a/src/main/java/com/qf/myafterprojecy/service/imp/IUserService.java b/src/main/java/com/qf/myafterprojecy/service/imp/IUserService.java new file mode 100644 index 0000000..50bf69e --- /dev/null +++ b/src/main/java/com/qf/myafterprojecy/service/imp/IUserService.java @@ -0,0 +1,79 @@ +package com.qf.myafterprojecy.service.imp; + +import com.qf.myafterprojecy.config.ResponseMessage; +import com.qf.myafterprojecy.pojo.Users; +import com.qf.myafterprojecy.pojo.dto.UserDto; + +import java.util.List; + +public interface IUserService { + /** + * 根据ID获取用户信息 + * @param id 用户ID + * @return 返回用户信息 + */ + ResponseMessage getUserById(Long id); + + /** + * 获取所有用户列表 + * @return 返回用户列表 + */ + ResponseMessage> getAllUsers(); + + /** + * 根据用户名获取用户信息 + * @param username 用户名 + * @return 返回用户信息 + */ + ResponseMessage getUserByUsername(String username); + + /** + * 保存新用户 + * @param userDto 用户数据传输对象 + * @return 返回保存结果 + */ + ResponseMessage saveUser(UserDto userDto); + + /** + * 更新用户信息 + * @param id 用户ID + * @param userDto 用户数据传输对象 + * @return 返回更新结果 + */ + ResponseMessage updateUser(Long id, UserDto userDto); + + /** + * 删除用户 + * @param id 用户ID + * @return 返回删除结果 + */ + ResponseMessage deleteUser(Long id); + + /** + * 根据角色查询用户列表 + * @param role 角色 + * @return 用户列表 + */ + ResponseMessage> getUsersByRole(int role); + + /** + * 检查用户名是否存在 + * @param username 用户名 + * @return 是否存在 + */ + ResponseMessage existsByUsername(String username); + + /** + * 检查邮箱是否存在 + * @param email 邮箱 + * @return 是否存在 + */ + ResponseMessage existsByEmail(String email); + + /** + * 检查手机号是否存在 + * @param phone 手机号 + * @return 是否存在 + */ + ResponseMessage existsByPhone(String phone); +} diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..7c6e481 --- /dev/null +++ b/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,5 @@ +{"properties": [{ + "name": "Content-Type,", + "type": "java.lang.String", + "description": "A description for 'Content-Type,'" +}]} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f517308..87b841e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -23,6 +23,7 @@ spring.jpa.show-sql=false spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect spring.jpa.open-in-view=false + # JPA性能优化配置 spring.jpa.properties.hibernate.jdbc.batch_size=30 spring.jpa.properties.hibernate.order_inserts=true @@ -31,20 +32,20 @@ spring.jpa.properties.hibernate.order_updates=true # spring.jpa.properties.hibernate.cache.use_second_level_cache=true # spring.jpa.properties.hibernate.cache.use_query_cache=true - 缓存配置 +# 缓存配置 spring.cache.type=redis spring.cache.redis.time-to-live=1800000 spring.cache.redis.key-prefix=CACHE_ spring.cache.redis.use-key-prefix=true spring.cache.redis.cache-null-values=false - Redis配置 +# Redis配置 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=123456 spring.redis.database=0 spring.redis.timeout=10000ms - Redis连接池优化配置 +# Redis连接池优化配置 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=10000ms spring.redis.lettuce.pool.max-idle=8 @@ -76,13 +77,6 @@ jwt.token-prefix=Bearer cors.allowed-origins=http://localhost:3000 cors.allowed-methods=GET,POST,PUT,DELETE,OPTIONS cors.allowed-headers=*, - Content-Type, - X-Requested-With, - accept, - Origin, - Access-Control-Request-Method, - Access-Control-Request-Headers, - Authorization cors.allow-credentials=true cors.max-age=3600 @@ -101,10 +95,10 @@ server.servlet.session.timeout=30m server.session.tracking-modes=cookie # 国际化配置 -#spring.mvc.locale-resolver=fixed -#spring.mvc.locale=zh_CN +spring.mvc.locale-resolver=fixed +spring.web.locale=zh_CN # ## 响应编码配置 -#spring.http.encoding.charset=UTF-8 -#spring.http.encoding.enabled=true -#spring.http.encoding.force=true +spring.http.encoding.charset=UTF-8 +spring.http.encoding.enabled=true +spring.http.encoding.force=true