You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postman中构造以对象为键的Map请求体创建Order

正确的Order创建请求体格式(适配JPA Map<Item, Integer>结构)

你的请求体错误在于颠倒了Map的键值对应关系:实体Order的items是Map<Item, Integer>,即键为Item实体、值为整数类型的库存数量,而你之前的写法把自定义字符串作为键、Item作为值,完全不符合实体定义。

根据你的JPA映射配置(@MapKeyJoinColumn关联Item的ID),分两种场景给出正确请求体:

场景1:关联已存在的Item(推荐)

如果数据库中已有Item记录,直接用Item的ID作为Map的键,值为对应库存数量:

{
  "id": 1,
  "name": "first order",
  "items": {
    "1": 5,
    "2": 3
  }
}
  • "1"、"2"是数据库中已存在的Item的ID
  • 对应的值是该Item的库存数量(Integer类型)

场景2:创建新Item并关联到Order

若需同时创建新Item,需先给Order的items字段添加级联持久化配置:

@ElementCollection(cascade = CascadeType.PERSIST)
@CollectionTable(name="INVENTORY", joinColumns=@JoinColumn(name="STORE"))
@Column(name="COPIES_IN_STOCK")
@MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID")
Map<Item, Integer> items;

此时请求体需将Item的完整JSON序列化字符串作为Map的键,值为库存数量:

{
  "id": 1,
  "name": "first order",
  "items": {
    "{\"id\": 1, \"name\": \"first item\"}": 5,
    "{\"id\": 2, \"name\": \"second item\"}": 3
  }
}

注意:这种方式依赖Jackson对实体键的序列化逻辑,体验较差,更建议先独立创建Item,再用场景1的方式关联。

内容的提问来源于stack exchange,提问作者Igor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:10:54