Files
brapi-java/docs/problem_fix/03-fix-doing/07-get-crosses.md

51 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 等种子数据字段完整。
---
**状态:已完成**