2014-02-13 53 views
0

我深入Java EE,學習JPA和JAX-RS。 我想在關係的「擁有」一側完成GET請求時公開所有OneToMany實體。JAX-RS在GET中暴露OneToMany實體

我創建了實體Company和CompanyAddress,公司可以有多個地址(OneToMany),並由CompanyAddress實體中的字段companyId映射。

我想在公司完成GET時公開包括所有地址的公司,其他方式我只希望公司地址在此字段上完成GET時顯示。我該如何做這項工作?

在我的門面類的公司:

@GET 
@Path("{id}") 
@Produces({"application/xml", "application/json"}) 
public Company find(@PathParam("id") Integer id) { 
    return super.find(id); 
} 

在我的實體類公司:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyId",fetch=FetchType.EAGER) 
private Collection<CompanyAddress> companyAddressCollection; 

@XmlTransient 
public Collection<CompanyAddress> getCompanyAddressCollection() { 
    return companyAddressCollection; 
} 

而且在我的公司地址

實體類
@JoinColumn(name = "companyId", referencedColumnName = "id") 
@ManyToOne(optional = false) 
private Company companyId; 
+0

訪問「GET」路徑時的結果如何? – Smutje

+2

XmlTransient不會丟棄XML中的地址,這與您想要實現的完全相反嗎? – Gimby

回答

0

@XmlTransient註釋對於解決JavaBean屬性名稱和字段名稱之間的名稱衝突或阻止字段/屬性的映射很有用。

刪除@XmlTransient註釋和companyAddressCollection將在XML文檔中表示。

+1

這對我有用,我將XMLTransient標記移動到CompanyAddress實體!我將深入研究所有註釋及其功能。 – RoyB