# 04 研究与实验卡 - 规范版本:Jakarta Persistence 3.2 官方 HTML,https://jakarta.ee/specifications/persistence/3.2/jakarta-persistence-spec-3.2 。核对 §2.4(层次主键一次定义)、§2.11(双向关系拥有方、级联 REMOVE 限制、私有孤儿删除及 flush 时机)、§2.12.2(many/one 默认关系)、§2.13 / §2.13.2(抽象实体与映射超类)、§2.14(两种必需继承策略)、§3.3.4(关系同步)、§11.1.25–26 / 31 / 41–42(注解)。 - 已运行基线(非本章扩展实验):`ProcurementJpaTest.lifecycleAndServerCalculatedTotal` 在清上下文后重读一条明细;`uniqueOrderAndTenantAndRetry` 拒绝其他租户,顺序重试并核对同一申请只查到一单。六例通过,退出码 0,逐文件 SHA-256 与原始记录见 `writing-plans/jpa/verification/20261004T053805Z-pg16-resource-local/`。未对多态、孤儿、只改 inverse side、唯一键异常或并发重复插单运行实验。 - 既有代码入口:`examples/jpa/src/main/java/blog/jpa/ProcurementRequest.java`、`ProcurementLine.java`、`ProcurementOrder.java`、`src/main/resources/META-INF/persistence.xml` 与 `db/migrations/01-init.sql`(`purchase_line.request_id NOT NULL`、`purchase_order.request_id UNIQUE`)。后续候选 `ApprovalAction` / `ApprovedAction` / `RejectedAction`、注册、迁移、独立测试尚未落地。 - 多态正常输入:一条批准、一条拒绝的动作,租户 A;新上下文查询父类得到两种子类并核对 id/字段,租户 B 查询不可见。关联正常输入:两条明细指向同一申请,另起事务对已持久化明细测试孤儿删除。状态:NOT_RUN,没有 SQL 计数或数据库终态。 - 失败输入:专用测试映射仅改逆向集合导致 owning side 缺失;已存在订单后重复插单;跨租户写入入口。根据当前数据库约束与服务入口分别判定拒绝位置和回滚后行数。状态:NOT_RUN;不预设异常类、SQLSTATE 或 flush/commit 出错时点。 - 扩展证据要求:冻结新增代码 SHA、Java/Hibernate/pgJDBC/PostgreSQL 版本、DDL/迁移、命令/退出码、原始输出、预期与新连接检查值。已有通过记录不能覆盖这些待运行路径;JTA 不在本章实验范围。