2011-09-18 24 views
1

考慮下面的實體類:JAXB REST PUT'ting引用協會

  • Manufacturer:代表汽車製造商(福特,沃爾沃,...),並有一個名字。
  • Model:表示模型(Fiesta,S80),具有名稱,並且由單個製造商製造。

    @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> 

製造商元素指向1Manufacturer一個有效的實例,但是,當模型堅持, MANUFACTURER_IDnull。我怎樣才能讓JAXB從XML讀取製造商的ID?

謝謝!

回答

3

考慮向製造商添加超鏈接而不是ID(以使其更加RESTful)。請參閱users @ jersey郵件列表中的this e-mail,其中有一個例子。

+0

感謝您的答案!使用這兩個帖子作爲幫助,我能夠得到這個正常工作,謝謝! – Laurens

1

我給了類似問題的下列答案可能會有所幫助。它利用一個XmlAdapter的被引用的對象轉換爲/從ID:

要在JAX-RS環境中利用它來創建一個RESTful服務,您將需要利用一個MessageBodyReader爲了在XmlAdapter上設置一個EntityManager實例傳遞給Unmarshaller