【问题标题】:JAXB REST PUT'ting referenced associationJAXB REST PUT'ting 引用的关联
【发布时间】:2011-09-18 09:27:17
【问题描述】:

考虑以下实体类:

  • Manufacturer:代表汽车制造商(福特、沃尔沃……)并有名称。
  • Model:代表型号(Fiesta,S80),有名称,由单一制造商生产。

模型中的manufacturer字段标注如下:

@ManyToOne
@XmlIDREF
private Manufacturer manufacturer;

然后,我定义了两个 REST 资源,用于获取和放置制造商和类型。问题在于放置类型:

@PUT
@Consumes("application/xml")
public void putModel(JAXBElement<Model> model) {
    modelFacade.create(model.getValue());
}

以及我尝试放入的 XML:

<model>
    <name>Fiesta</name>
    <manufacturer>1</manufacturer>
</model>

制造商元素指向1,这是Manufacturer 的一个有效实例,但是,当模型被持久化时,MANUFACTURER_IDnull。我怎样才能让 JAXB 也从 XML 中读取制造商的 ID?

谢谢!

【问题讨论】:

    标签: java jakarta-ee rest jaxb jersey


    【解决方案1】:

    考虑添加指向制造商的超链接而不是 ID(以使其更加 RESTful)。请参阅 users@jersey 邮件列表中的 this e-mail,其中有一个示例。

    【讨论】:

    • 感谢您的回答!使用这两个帖子作为帮助,我能够正常工作,谢谢!
    【解决方案2】:

    以下我对类似问题的回答可能会有所帮助。它利用XmlAdapter 将引用的对象转换为ID:

    要在 JAX-RS 环境中利用它来创建 RESTful 服务,您需要利用 MessageBodyReader 以便在传递给 UnmarshallerXmlAdapter 上设置 EntityManager 的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多