Java、Jersey、Hibernate—如何通过rest调用传递定义为OneToMany映射的实体?
我有两个实体——公司和公司办公室。Company与CompanyOffice有一个one-omany映射,CompanyOffice与Company有一个manytone映射。 在创建新的公司办公室时,我应该能够在请求中提供公司id。 我正在使用Dropwizard框架和Hibernate ORM Company.javaJava、Jersey、Hibernate—如何通过rest调用传递定义为OneToMany映射的实体?,java,hibernate,jersey,dropwizard,Java,Hibernate,Jersey,Dropwizard,我有两个实体——公司和公司办公室。Company与CompanyOffice有一个one-omany映射,CompanyOffice与Company有一个manytone映射。 在创建新的公司办公室时,我应该能够在请求中提供公司id。 我正在使用Dropwizard框架和Hibernate ORM Company.java @Getter @Setter @Entity @Table(name = "Company") @JsonInclude(Include.NON_NULL) public
@Getter
@Setter
@Entity
@Table(name = "Company")
@JsonInclude(Include.NON_NULL)
public class Company {
@Id
@Column(name = "id")
@GenericGenerator(name = "generator", strategy = "increment")
@GeneratedValue(generator = "generator")
private long id;
@NotEmpty
@Column(name = "company_name")
@JsonProperty("company_name")
private String companyName;
@JsonIgnore
@JsonBackReference
@OneToMany(targetEntity=CompanyOffice.class, mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<CompanyOffice> companyOffices;
@JsonCreator
public Company(@JsonProperty("company_name") String companyName) {
this.companyName = companyName;
}
}
}
CompanyOfficeResource.java
@POST
@Timed
@Path("add")
@UnitOfWork
public Long addCompanyOffice(CompanyOffice companyOffice) {
Company parentCompany = companyOffice.getCompany();
String officeName = companyOffice.getOfficeName();
CompanyOffice newCompanyOffice = companyOfficeDAO.createCompanyOffice(
new CompanyOffice(officeName, parentCompany)
);
return newCompanyOffice.getId();
}
通过rest调用发送的JSON请求:
{
“公司id”:1,
“办公室名称”:“PW”
}
数据库中存在ID为1的公司。我应该如何处理这件事?正确的方法是什么
为了进一步简化,
在创建对象B的新实体的请求中,传递对象A的实体的最佳方式是什么?对象A与对象B有一对一的关系,对象B与对象A有多对一的关系。请解释下一票是为了什么。我还没有弄清楚这一点。任何人如果你需要更多这方面的信息,请告诉我。
@POST
@Timed
@Path("add")
@UnitOfWork
public Long addCompanyOffice(CompanyOffice companyOffice) {
Company parentCompany = companyOffice.getCompany();
String officeName = companyOffice.getOfficeName();
CompanyOffice newCompanyOffice = companyOfficeDAO.createCompanyOffice(
new CompanyOffice(officeName, parentCompany)
);
return newCompanyOffice.getId();
}