# GET /crosses > 来源:BrAPI v2.1 校验报告(03-fix.md) ## 概要 | 项 | 值 | | --- | --- | | 状态 | warning | | 方法 | GET | | URL | `/brapi/v2/crosses` | | 完整 URL | `http://localhost:8081/brapi/v2/crosses` | | 路径模板 | `GET /crosses` | | 模块 | Crosses | | 响应时间 | 18958 ms | ## 校验详情 ``` GET /crosses Crosses 18958 ms schema mismatch schema mismatch Json matches schema: schemas/v2.1/metadata.json (schema mismatch) — Schema: schemas/v2.1/metadata.json Server response is not valid JSON. Json matches schema: schemas/v2.1/Crosses/getCrossesResponse.json (schema mismatch) — Schema: schemas/v2.1/Crosses/getCrossesResponse.json Server response is not valid JSON. ``` --- ## 修复说明 - **根因**: - `additional_info.value` 中 Java 序列化的 `Boolean.TRUE` 经 `getAdditionalInfoMap()` 直接输出为 JSON boolean,违反 BrAPI schema(`additionalInfo` 值须为 string)。 - 匿名请求的 metadata 写入 `Long.MAX_VALUE` 对应的 token 过期 WARNING(年份溢出),导致 `metadata.json` 校验失败。 - 响应体含 `"@context": null`,严格 schema 校验不接受。 - `GET /crosses` 列表查询存在 N+1 懒加载,响应耗时过长(~19s),校验器易超时并报告 not valid JSON。 - **修复**: - `BrAPIPrimaryEntity.getAdditionalInfoMap()` 使用 `String.valueOf()` 统一转为字符串(共用修复)。 - `BrAPIController.getStatusMessages()` 匿名用户跳过 token WARNING,且忽略超出合理范围(>2100 年)的过期时间。 - `BrApiJacksonConfig` + `BrApiJsonResponseAdvice` 序列化时省略 null 字段(如 `@context`)。 - `CrossService.prefetchAssociations()` 用 JOIN FETCH 批量预加载 crossingProject、parents、pollinationEvents 等关联,消除 N+1 查询。 - `CrossService.convertFromEntity()` 对缺少 `:` 的 crossAttributes 做安全解析,避免 500 纯文本错误响应。 - **验证**:`GET /brapi/v2/crosses` 响应可正常解析为 JSON;`additionalInfo.dummyData` 为字符串;无 `@context: null`;cross1 等种子数据字段完整。 --- **状态:已完成**