我正在学习Java EE,学习JPA和JAX-RS。
我想在关系的“拥有”侧完成GET请求时公开所有OneToMany实体。
我创建了实体Company和CompanyAddress,该公司可以具有多个地址(OneToMany),并由CompanyAddress实体中的字段companyId映射。
我想在公司上完成GET时公开我的公司,包括所有地址,否则我只希望在该字段上完成GET时显示companyaddress。我该如何进行这项工作?
在我的公司门面课程中:
@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;
最佳答案
@XmlTransient
注释对于解决JavaBean属性名称和字段名称之间的名称冲突或防止字段/属性的映射非常有用。
删除@XmlTransient
批注,companyAddressCollection将在XML
文档中表示。