2014-02-13 49 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