JAX-RS在GET中公开OneToMany实体

时间:2014-02-13 11:28:09

标签: java rest jpa jax-ws jax-rs

我正在深入学习Java EE,学习JPA和JAX-RS。 我希望在关系的“拥有”一侧完成GET请求时公开所有OneToMany实体。

我创建了实体Company和CompanyAddress,公司可以有多个地址(OneToMany),并由CompanyAddress实体中的fieldId字段映射。

我希望公开我的公司,包括在公司完成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;
}

在我的CompanyAddress实体类中

@JoinColumn(name = "companyId", referencedColumnName = "id")
@ManyToOne(optional = false)
private Company companyId;

1 个答案:

答案 0 :(得分:1)

@XmlTransient注释对于解决JavaBean属性名称和字段名称之间的名称冲突或阻止字段/属性的映射非常有用。

删除@XmlTransient注释,companyAddressCollection将在XML doc中表示。