Java JAXB REST PUT';ting参考协会

Java JAXB REST PUT';ting参考协会,java,jakarta-ee,rest,jaxb,jersey,Java,Jakarta Ee,Rest,Jaxb,Jersey,考虑以下实体类: 制造商:表示汽车制造商(福特、沃尔沃等)并有名称 型号:表示一个型号(嘉年华,S80),有一个名称,由一个制造商制造 模型中的“制造商”字段注释如下: @ManyToOne @XmlIDREF private Manufacturer manufacturer; 然后,我定义了两个REST资源,用于获取和放置制造商和类型。问题在于放置类型: @PUT @Consumes("application/xml") public void putModel(JAXBElement

考虑以下实体类:

  • 制造商
    :表示汽车制造商(福特、沃尔沃等)并有名称
  • 型号
    :表示一个型号(嘉年华,S80),有一个名称,由一个制造商制造
模型中的“制造商”字段注释如下:

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

@PUT
@Consumes("application/xml")
public void putModel(JAXBElement<Model> model) {
    modelFacade.create(model.getValue());
}
@PUT
@使用(“应用程序/xml”)
公共模型(JAXBELENT模型){
创建(model.getValue());
}
我想说的XML是:

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

嘉年华
1.
manufacturer元素指向
1
,这是
manufacturer
的有效实例,但是,当模型被持久化时,
manufacturer\u ID
null
。如何让JAXB也从XML中读取制造商ID


谢谢

考虑向制造商添加超链接,而不是ID(以使其更加RESTful)。从头到尾看users@jersey邮件列表中有一个例子。

考虑向制造商添加一个超链接,而不是ID(以使其更加RESTful)。从头到尾看users@jersey邮件列表中有这样一个例子。

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


要在JAX-RS环境中利用这一点来创建RESTful服务,您需要利用MessageBodyReader,以便在传递给
解组器
XmlAdapter
上设置EntityManager实例。它利用
XmlAdapter
将引用对象转换为ID或从ID转换为:


要在JAX-RS环境中利用这一点创建RESTful服务,您需要利用MessageBodyReader,以便在传递给
解组器的
XmlAdapter
上设置EntityManager实例,谢谢您的回答!使用这两个帖子作为帮助之手,我能够让它正常工作,谢谢!谢谢你的回答!使用这两个帖子作为帮助之手,我能够让它正常工作,谢谢!