我正在開發一個使用JAX-RS和JAXB的RESTful服務。我有一個Complain
類,以下是它的條紋縮小版本:JAX-RS和JAXB @XmlTransient
@Entity
@Table(name = "complain")
@XmlRootElement
public class Complain implements Serializable {
private String title;
private String description;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "complainidComplain")
private Collection<Comment> commentCollection;
@XmlTransient
public Collection<Comment> getCommentCollection() {
return commentCollection;
}
}
注:我飾getCommentCollection
與@XmlTransient
註釋,因爲我不希望看到的時候我正在尋找所有的抱怨發表評論在@Path("/")
。
example.com/api/complain/
<complains>
<complain>
<title>Foo</title>
<description>Foo is foo</description>
</complain>
<complain>
<title>Bar </title>
<description>Bar is bar</description>
</complain>
</complains>
但是當我在@Path("/{id}")
尋找特定Complain
,我需要的評論出現在XML輸出。
example.com/api/complain/1
<complain>
<title>Foo</title>
<description>Foo is foo</description>
<comments>
<comment> Yes, i agree </comment>
<comment> Lorem if foo </comment>
</comments>
</complain>
既然我已經裝飾getCommentCollection
與@XmlTransient
註釋,當我在@Path("/{id}")
尋找特定Complain
我不能評論。我怎樣才能做到這一點?
使用''@ XmlTransient'''進行註釋是一個編譯時決定,因此您不能在運行時動態更改它。您可以映射到有限視圖(通過第二個類或將commentCollection設置爲null)或查看[如何有條件地使用JAXB或Jackson序列化]中討論的解決方案(http://stackoverflow.com/questions/12941398 )。 – lefloh
@lefloh,如果你能告訴我如何映射到有限的視圖,我會很感激,我是JAX-RS的新手。 –
我加了一個答案。 – lefloh